如何在C#中管理混合的同步和异步流程?

时间:2015-10-09 03:21:18

标签: c# asynchronous process synchronization

期望的结果:

定义同步和异步方法关系的混合。

示例

假设有4个方法,每个方法包含一个过程:

  1. Method.ProcessA1必须在调用Method.ProcessA2之前启动和完成(同步关系)。
  2. Method.ProcessB1必须在调用Method.ProcessB2之前开始和完成(同步关系)。
  3. Method.ProcessA和Method.ProcessB可以不管彼此和并行(异步关系)而开始和结束。
  4. 以下链接中显示的流程图更清楚地说明了所需的同步性。流程图如下所示:

    enter image description here

    有一种异步方法,也许它的用法在这里是合适的。

    注意:我是SO的新手并且愿意提出有关撰写更高质量问题的建议。

1 个答案:

答案 0 :(得分:4)

void ProcessA()
{
    ProcessA1();
    ProcessA2();
}

void ProcessB()
{
    ProcessB1();
    ProcessB2();
}

void LaunchProcesses()
{
    Task aTask = Task.Run((Action)ProcessA); //You could also call use Task.Run(() => ProcessA());
    Task bTask = Task.Run((Action)ProcessB);
    aTask.Wait();
    bTask.Wait();
}