所以我有以下代码
Action d = () =>
{
for (int i = 0; i <= 10; i++)
{
Thread.Sleep(50);
Console.WriteLine("Task: {0} log:{1}",Thread.CurrentThread.ManagedThreadId,i);
}
};
Task.Factory.StartNew(d);
但是,它不会输出任何内容。但是,如果我评论Thread.Sleep,它会按预期工作。根据值的不同,使用不同的“ sleep ”值可以获取或多或少的结果。
为什么会这样发生?
最佳答案
我怀疑您的程序在任务有机会运行之前就已退出。
默认情况下,任务在线程池线程(即后台线程)上运行。这意味着您的程序在退出之前不会等待它们完成。
尝试在您的主线程上添加此代码:
var task = Task.Factory.StartNew( d );
task.Wait();
关于multithreading - Thread.Sleep 'breaks'任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8322634/