小编Maj*_*jor的帖子

如何按顺序而不是并行等待 C# 任务?

我有一组异步测试,它们在外部硬件上运行。

我可以按顺序运行它们,但因为所有这些测试都有副作用,所以我希望能够重新排列它们并一遍又一遍地运行它们。

当我将它们放入列表中并尝试等待每个之后,它们全部并行运行,而不是 1 个 1 个运行。

我希望能够打乱列表,然后按顺序运行它们。

如何按顺序运行测试 ( List<Task<bool>),同时将它们保留在列表中以便我可以随机播放列表?

private async void RunVisca()
{
    Ptz ptz = new Ptz(SelectedComPort, (byte)(1), SelectedBaudRate, Node.DeviceType.PTZ);

    UpdateResults("VISCA TEST START\n\n");

    // Method 1: Correct - Runs in order
    await VTestDriveClosedLoop(ptz, true);
    await VTestDriveClosedLoop(ptz, false);
    await VTestLimitsCl(ptz, 125, 20);
    await VTestLimitsOl(ptz, 125, 20);

    // Method 2: Incorrect - Runs in parallel
    List<Task<bool>> tests = new List<Task<bool>>();
    tests.Add(VTestDriveClosedLoop(ptz, true));
    tests.Add(VTestDriveClosedLoop(ptz, false));
    tests.Add(VTestLimitsCl(ptz, 125, 20));
    tests.Add(VTestLimitsOl(ptz, 125, 20));

    // Tasks all run in parallel here …
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous task async-await

2
推荐指数
1
解决办法
1651
查看次数

标签 统计

.net ×1

async-await ×1

asynchronous ×1

c# ×1

task ×1