小编Tro*_*itz的帖子

C# 链式 ContinueWith 不等待上一个任务完成

我正在测试 C# async/await 的异步性,遇到了一个惊喜,即 ContinueWith 的后续代码不等待前一个任务完成:

public async Task<int> SampleAsyncMethodAsync(int number,string id)
  {
            Console.WriteLine($"Started work for {id}.{number}");
            ConcurrentBag<int> abc = new ConcurrentBag<int>();

            await Task.Run(() => { for (int count = 0; count < 30; count++) { Console.WriteLine($"[{id}] Run: {number}"); abc.Add(count); } });

            Console.WriteLine($"Completed work for {id}.{number}");
            return abc.Sum();
        }
Run Code Online (Sandbox Code Playgroud)

这是使用以下测试方法执行的:

        [Test]
        public void TestAsyncWaitForPreviousTask()
        {
            for (int count = 0; count < 3; count++)
            {
                int scopeCount = count;

                var c = SampleAsyncMethodAsync(0, scopeCount.ToString())
                .ContinueWith((prevTask) =>
                {
                    return SampleAsyncMethodAsync(1, scopeCount.ToString()); …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous continuewith

3
推荐指数
1
解决办法
1529
查看次数

标签 统计

asynchronous ×1

c# ×1

continuewith ×1