但为什么新的
Task
开始在ui线程上?
因为除非另外指定,否则调用Start
任务会调度当前的任务TaskScheduler
,在您的情况下,该任务是SynchronizationContext
您使用创建的UI线程的正面TaskScheduler.FromCurrentSynchronizationContext()
.
启动
Task
,将其安排执行到当前TaskScheduler
.
从Task.Start方法
如果您希望将该任务安排在TaskScheduler
与当前任务不同的任务上,则可以将其作为参数传递:
t.Start(TaskScheduler.Defualt);
注意:几乎没有可以想象的使用Task.Start
是最好的解决方案.你应该重新考虑这个途径.