哪种启动MS TPL的Task类实例有一些延迟会更自然?
Task logManager = Task.Factory.StartNew(() => { // Some code }, TaskCreationOptions.LongRunning);
我只是想在几秒钟之后开始......
谢谢!
答案 0 :(得分:3)
使用计时器,这样就不会在延迟时间内浪费线程处理时间:
Task logManager = null;
new Timer((state) =>
{
logManager = Task.Factory.StartNew(() => { /* Some code*/}, TaskCreationOptions.LongRunning);
}, null, TimeSpan.FromSeconds(2), TimeSpan.FromMilliseconds(-1));
答案 1 :(得分:2)
int msDelay = 1000;
Task task = Task.Factory
.StartNew(() => { Thread.Sleep(msDelay); })
.ContinueWith((Task starter) => { MessageBox.Show("Started after delay"); }, , TaskContinuationOptions.LongRunning);
答案 2 :(得分:1)
Task logManager = Task.Factory.StartNew(() => { Thread.Sleep(1000); }, TaskCreationOptions.LongRunning);
TaskCreationOptions.LongRunning
将使用专用线程,因此在这种情况下阻塞不会影响任何其他线程