【发布时间】:2017-01-08 01:55:20
【问题描述】:
我有一个控制台应用程序,无需用户交互即可执行我的代码。如果用户有意或无意地在控制台窗口内单击,所有执行都会停止。
这与从控制台窗口复制文本有关。应用程序重新开始执行的唯一方法是用户选择文本,然后右键单击控制台窗口,将其复制到剪贴板。
要查看实际效果,请创建一个控制台应用程序并添加以下代码。
class Program
{
static void Main(string[] args)
{
var task = Task.Run(async () =>
{
int i = 0;
while (true)
{
Console.WriteLine(i++);
await Task.Delay(1000);
}
});
Console.ReadLine();
}
}
当您单击控制台窗口时,任务线程停止执行。这根本不是可取的行为,我想防止在我的控制台应用程序中发生这种情况。
如何防止这种情况发生?据我所知,控制台窗口上的所有属性/事件都与控制此行为无关。
【问题讨论】:
-
请停止编辑这个,我有一个重写,希望能澄清发生了什么。 @ShannonHolsinger 问题是你不能准确地告诉用户不要不小心点击控制台窗口......
-
我不确定,但这可能是 Windows 10 中的新功能。如果您的客户端计算机上有一个长时间运行的控制台应用程序,并且他们在试图聚焦窗口。而且没有任何迹象表明发生了什么,或者如何让应用程序再次运行。
-
见this,可能不是一个确切的例子,但包含有用的提示。
-
@Mahdi 什么操作系统?我相信这种变化对于 Windows 10 来说是新的。
-
@Mahdi 在这里也一样,我绝对可以复制。