Task t = new Task(() =>
{
//I would expect this to be on a worker thread, but it's not!
Thread.Sleep(1000);
});
Task test = new Task(() =>
{
Thread.Sleep(1000);
});
test.ContinueWith(x =>
{
//Do some UI Updates here, but also start another Task running.
t.Start();
}, TaskScheduler.FromCurrentSynchronizationContext());
test.Start();
为什么t
在UI线程上被调用。据我所知,我创建了一个Task
对test
,它正确地在UI线程上调用,但我然后开始一个新的任务运行。现在我知道我可以通过指定TaskScheduler.Default
作为针对t.Start
的重载方法来解决此问题,但为什么新的Task
在ui线程上开始?为什么在UI上调用启动一个新的任务线程
一般提示:没有理由自己使用任务构造函数。 – Voo