【发布时间】:2014-04-28 22:34:04
【问题描述】:
哪种方式更自然地启动 MS TPL 的 Task 类实例?
Task logManager = Task.Factory.StartNew(() => { // Some code }, TaskCreationOptions.LongRunning);
我只是想稍后再启动它......
谢谢!
【问题讨论】:
标签: c# .net task-parallel-library
哪种方式更自然地启动 MS TPL 的 Task 类实例?
Task logManager = Task.Factory.StartNew(() => { // Some code }, TaskCreationOptions.LongRunning);
我只是想稍后再启动它......
谢谢!
【问题讨论】:
标签: c# .net task-parallel-library
使用计时器,这样就不会在延迟时间内浪费线程处理时间:
Task logManager = null;
new Timer((state) =>
{
logManager = Task.Factory.StartNew(() => { /* Some code*/}, TaskCreationOptions.LongRunning);
}, null, TimeSpan.FromSeconds(2), TimeSpan.FromMilliseconds(-1));
【讨论】:
int msDelay = 1000;
Task task = Task.Factory
.StartNew(() => { Thread.Sleep(msDelay); })
.ContinueWith((Task starter) => { MessageBox.Show("Started after delay"); }, , TaskContinuationOptions.LongRunning);
【讨论】:
Task logManager = Task.Factory.StartNew(() => { Thread.Sleep(1000); }, TaskCreationOptions.LongRunning);
TaskCreationOptions.LongRunning 将使用专用线程,因此在这种情况下阻塞不会影响任何其他线程
【讨论】: