0

我正在尝试Task使用 TPL 创建一个。例如:

Task.Factory.StartNew(() => DoSomething());

这工作正常,但现在我想在 gui 线程上启动它。

我可以使用以下命令缓存 gui 调度程序:

_uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();

但我看不到如何使用此调度程序启动新任务。一旦初始任务完成,我可以找到的所有示例都Task.ContinueWith()用于安排第二个任务_uiScheduler,但我想使用此调度程序创建初始任务。

干杯

4

3 回答 3

3

有大量的重载StartNew其中一个接受调度程序。只需传递None其他参数:

Task.Factory.StartNew(() => DoSomething(), CancellationToken.None,
                      TaskCreationOptions.None, _uiScheduler);
于 2012-12-13T14:35:26.870 回答
2

简单 - 有一些重载(例如这个TaskFactory.StartNew将调度程序作为参数之一。

Task.Factory.StartNew(() => DoSomething(), CancellationToken.None,
                      TaskCreationOptions.None, _uiScheduler);
于 2012-12-13T14:36:06.350 回答
1

试试这个:

TaskFactory factory = new TaskFactory(TaskScheduler.FromCurrentSynchronizationContext());
factory.StartNew(() => DoSomething());
于 2012-12-13T14:36:09.513 回答