小编PSG*_*Guy的帖子

为什么这个任务早点返回?我做错了什么吗?

我正在尝试建立一些具有一些最小耦合的工作者,但我想使用C#async和任务.并非所有任务都是纯粹的异步(有些将是完全同步的).这样做的动机是我想创建一些执行业务逻辑的简单方法,并使用System.Threading.Tasks.TaskAPI将它们链接在一起以保留一些排序概念.基本上,我想创建第一个任务,注册一些延续,然后等待最终任务完成.

这是我构建的简单原型,看看我想做什么甚至可以工作:

void Main()
{
    var worker = new Worker();

    var work = worker.StartWork(1, 2000);
    work.ConfigureAwait(false);

    var final = work.ContinueWith(_ => worker.StartWork(2, 0))
        .ContinueWith(ant => worker.StartWork(3, 1500));

    var awaiter = final.ContinueWith(_ => Tuple.Create(_.Id, _.Status));
    Console.WriteLine("\"final\" completed with result {0}", awaiter.Result);
    Console.WriteLine("Done.");
}

// Define other methods and classes here
class Worker {
    internal async Task StartWork(int phase, int delay) {
        Console.WriteLine("Entering phase {0} (in Task {1}) with {2} milliseconds timeout.", phase, Task.CurrentId, delay);
        if (delay > …
Run Code Online (Sandbox Code Playgroud)

c# multithreading asynchronous

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

标签 统计

asynchronous ×1

c# ×1

multithreading ×1