Task.Factory.StartNew() Taskscheduler parameter

11

参见:TaskFactory

当我想创建一个长时间运行且可取消的任务,并且我正在从UI调用该方法时,如何传递taskscheduler参数?

1个回答

12

问题并不是很明显。为什么你不能直接调用:

CancellationToken token = new CancellationToken(false);
TaskScheduler scheduler = TaskScheduler.Default;
Task task = taskFactory.StartNew(action, token, 
                                 TaskCreationOptions.LongRunning, scheduler);

我已经修改了我的问题,如果我从UI线程调用此方法,传递.Default参数是否安全?考虑到这是一个长时间运行和阻塞的任务。 - Benny
@Benny:你的问题本身仍然不是很清楚,因为它没有提到TaskScheduler.Default。但是,从UI线程指定TaskScheduler.Default是可以的——但是这个任务本身不会在UI线程上运行。 - Jon Skeet
抱歉,我只是想确认一下当我在 UI 线程中指定 TaskScheduler.Default 时,任务不会阻塞 UI 线程。谢谢。 - Benny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接