【发布时间】:2021-11-15 09:23:44
【问题描述】:
我有一个 Windows 窗体,其中包含(除其他外)一个开始和停止按钮。如果 Start button_click 代码花费的时间太长,我想按下停止按钮(或其他一些事件),这将允许我停止该代码完成。问题是在 UI 线程允许处理 Stop button_click 代码之前不必等待该代码完成。当我尝试查找问题的答案时,一些线程睡眠、中断和中止信息似乎不适用。一旦按下开始按钮,它就会在我的 Start Button_click 事件处理程序中运行代码,我希望能够启动一个事件,然后停止该代码的运行。我尝试在使用 Async 和 Await 的任务中运行所有代码(在 Start Button_click 事件处理程序中),但这不起作用,因为该代码试图更新和更改我的表单上在主程序中创建的一些文本框用户界面线程。而且由于开始按钮代码需要一段时间才能完成,我不确定如何启动停止事件以允许我停止当前正在运行的代码。
【问题讨论】:
-
代码总是受欢迎的。
-
另外,展示您的尝试可以让我们帮助您解决问题。
-
现在,最好的答案是您需要合作关闭您的代码。
CancellationToken是您所需要的。
标签: c# multithreading user-interface thread-synchronization