在.NET控制台应用程序上使用CancelKeyPress事件

时间:2016-04-26 15:18:32

标签: c# console-application cancellation cancellationtokensource cancellation-token

我已经在v4.5.1上编写了一个.NET控制台应用程序(在C#中)。我的>>> df.printSchema() root |-- Parameters: map (nullable = true) | |-- key: string | |-- value: string (valueContainsNull = true) 方法如下所示:

Main

其中一个可能的命令(由public static void Main(string[] args) { Console.CancelKeyPress += delegate { CancelToken.Cancel(); }; var kbTask = Task.Run(async () => { while (true) { await ProcessCommand(Console.ReadLine()); } }, CancelToken.Token); kbTask.Wait(CancelToken.Token); } 处理)调用一个长时间运行的进程,我希望能够通过ProcessCommand委托使用CTRL + C取消。

但是当我这样做时,Visual Studio会打开一个标签,上面写着"未加载mscorlib.dll"然后什么都不做 - 控制台保持打开但没有响应。

我还尝试在调试之外运行应用程序,但我找不到可执行文件。

1 个答案:

答案 0 :(得分:0)

转到工具,选项,调试,符号并设置缓存位置。然后在上面点击加载,它会为你获取必要的符号并将它们存储在你提供的缓存位置。

Microsoft的编译器工具在具有.pdb扩展名(程序数据库)的单独文件中创建符号。这允许他们为发布二进制文件创建分离符号。使用符号服务器,IDE可以在调试期间获取与DLL的特定版本匹配的符号文件。您可以为自己的产品二进制文件配置此系统,这对于事后调试最终用户计算机上的任何崩溃非常有用。

有关使用公共符号的详细信息,请参阅Microsoft Documentation