首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连续ContinueWith语句

连续ContinueWith语句
EN

Stack Overflow用户
提问于 2015-07-15 01:35:09
回答 2查看 117关注 0票数 1

我有过

代码语言:javascript
复制
    System.Threading.Tasks.Task.Factory.StartNew (() => {
       doSomething();
    }).ContinueWith (t => {
       doSomething2();
    }).ContinueWith (x => {
       doSomething3();
    }, TaskScheduler.FromCurrentSynchronizationContext ());

这些方法是否按顺序执行?也就是说,doSomething()被执行,一旦完成,doSomething2()就会启动,一旦完成,doSomething3()就会启动。

如果它们不是按顺序执行的,是否有更好的方法来执行?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-15 02:05:39

对于这类问题,一个简单的方法是编写一个快速测试:

代码语言:javascript
复制
using System;
using System.Threading;
using System.Threading.Tasks;


public class Program
{
    public static void Main()
    {
        Console.WriteLine("{0}: Starting Main: Thread ID {1}", DateTime.Now.TimeOfDay, Thread.CurrentThread.ManagedThreadId);
        var finalTask = Task.Delay(500)
            .ContinueWith(_ => {
                Console.WriteLine("{0}: First Continue With: Task ID {1}, Thread ID {2}", DateTime.Now.TimeOfDay, Task.CurrentId, Thread.CurrentThread.ManagedThreadId);
                Thread.Sleep(1000);
            })
            .ContinueWith(_ => {
                Console.WriteLine("{0}: Second Continue With: Task ID {1}, Thread ID {2}", DateTime.Now.TimeOfDay, Task.CurrentId, Thread.CurrentThread.ManagedThreadId);
                Thread.Sleep(1000);
            });;

        finalTask.Wait();
        Console.WriteLine("{0}: Finished!", DateTime.Now.TimeOfDay);
    }
}

这将产生以下结果。通过查看“时代”,这证实了第二个ContinueWith只发生在第一个完成之后。

代码语言:javascript
复制
02:03:16.1360139: Starting Main: Thread ID 107
02:03:16.6407471: First Continue With: Task ID 1, Thread ID 272
02:03:17.6514780: Second Continue With: Task ID 2, Thread ID 272
02:03:18.6592219: Finished!

.NET填充器

票数 0
EN

Stack Overflow用户

发布于 2015-07-15 01:44:09

对,是这样。它将始终按顺序执行。只有在调用任务完成后,ContinueWith才会运行。

创建一个在目标任务完成并返回值时异步执行的延续。

msdn参考

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31420067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档