当我在控制台窗口中使用滚动条时,所有线程和任务正在暂停。有什么方法可以防止这种情况发生?如何停止控制台暂停我的线程和任务?
例如:
Task.Run(async() =>
{
for (var z = 0; true; z++)
{
Console.WriteLine(z);
await Task.Delay(200);
}
});
或
var s = new Thread(() =>
{
for (var z = 0; true; z++)
{
Console.WriteLine(z);
Thread.Sleep(200);
}
});
如果你运行这些代码示例作为控制台应用程序中的任何一个,都将这样做:打印一些数字。执行过程中,用鼠标左键按住滚动条一段时间,数字就会停止。任务/线程已暂停。当你释放鼠标按钮时,数字将继续。
由于滚动条释放后的数字跟在前一个数字之后,控制台并没有简单地停止数字的输出。它一直在Console.WriteLine - 方法中等待,直到释放滚动条。
有谁知道如何解决我的问题?
你的程序只是暂停,因为你已经阻止了输出。即如果该节目不打电话,例如'Console.WriteLine()',它会继续运行得很好。事实上,任何线程_not_都不会试图写入输出(stdout或stderr)将继续运行。所以,要么不要阻塞输出,要么不写输出就运行重要的东西。 – 2014-12-02 21:39:14