我正在尝试使用TPL创建Task
。例如:
Task.Factory.StartNew(() => DoSomething());
这很好用,但现在我想在gui线程上启动它。
我可以使用以下命令缓存gui调度程序:
_uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
但我看不到如何使用此调度程序启动新任务。我可以找到的所有示例都使用Task.ContinueWith()
在初始任务完成后使用_uiScheduler
安排第二个任务,但我想使用此调度程序创建初始任务。
干杯
答案 0 :(得分:3)
StartNew
存在大量重载。 One他们接受调度程序。只需将None
传递给其他参数:
Task.Factory.StartNew(() => DoSomething(), CancellationToken.None,
TaskCreationOptions.None, _uiScheduler);
答案 1 :(得分:2)
简单 - this one存在重载(例如TaskFactory.StartNew
),它将调度程序作为参数之一。
Task.Factory.StartNew(() => DoSomething(), CancellationToken.None,
TaskCreationOptions.None, _uiScheduler);
答案 2 :(得分:1)
试试这个:
TaskFactory factory = new TaskFactory(TaskScheduler.FromCurrentSynchronizationContext());
factory.StartNew(() => DoSomething());