C# 为什么SendKeys.SendWait()会使我的应用程序崩溃

C# 为什么SendKeys.SendWait()会使我的应用程序崩溃,c#,thread-safety,messaging,sendkeys,C#,Thread Safety,Messaging,Sendkeys,在“我的控制台”应用程序中,会调用SendKeys.SendWait(“^c”),将某些选定文本复制到剪贴板 它工作得很好,但是如果在调用它时我的控制台应用程序有焦点,那么它就不会抛出异常,而是关闭我的应用程序。然后,事情开始发生变化,比如我的鼠标滚轮影响缩放,而不是上下滚动 为什么会发生这种情况。ctrl+c是控制台窗口关闭的信号 鼠标滚轮在关闭后影响缩放的原因是应用程序从来没有机会释放ctrl键 这可以通过更改ConsoleMode或更改Console.TreatControlCAsInpu

在“我的控制台”应用程序中,会调用
SendKeys.SendWait(“^c”)
,将某些选定文本复制到剪贴板

它工作得很好,但是如果在调用它时我的控制台应用程序有焦点,那么它就不会抛出异常,而是关闭我的应用程序。然后,事情开始发生变化,比如我的鼠标滚轮影响缩放,而不是上下滚动


为什么会发生这种情况。

ctrl+c
是控制台窗口关闭的信号

鼠标滚轮在关闭后影响缩放的原因是应用程序从来没有机会释放ctrl键

这可以通过更改ConsoleMode或更改
Console.TreatControlCAsInput
属性来解决


感谢您的帮助

看看如果在控制台应用程序具有焦点(至少在Windows 10之前)的情况下按ctrl-C会发生什么。至于另一部分,请注意,如果您的应用程序关闭,它就永远没有机会释放ctrl。@chris我只是照您所说的做了,我的应用程序照常关闭。因此,
ctrl+c
是Visual studio的快捷方式,我可以修复这个问题吗ctrl-c是一个。
控制台
类可以使用或CancelKeyPress事件覆盖此操作。