如何启动MS TPL的Task类实例有一些延迟?

时间:2012-01-16 17:28:48

标签: c# .net task-parallel-library

哪种启动MS TPL的Task类实例有一些延迟会更自然?

Task logManager = Task.Factory.StartNew(() => { // Some code }, TaskCreationOptions.LongRunning);

我只是想在几秒钟之后开始......

谢谢!

3 个答案:

答案 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将使用专用线程,因此在这种情况下阻塞不会影响任何其他线程