如何在windows窗体应用程序c#中中止当前任务
Posted
技术标签:
【中文标题】如何在windows窗体应用程序c#中中止当前任务【英文标题】:How to Abort Current task in windows form application c# 【发布时间】:2012-06-14 10:34:30 【问题描述】:我想提供一个取消当前任务的按钮,
假设我要执行以下任务,大约需要 30 分钟
private void CaptureSignal()
// Capture Signal Code ......
我需要显示一个取消当前任务的按钮(在此过程中的任何时间)。
有什么建议吗...?
提前谢谢...:)
【问题讨论】:
你是如何启动/运行这个任务的?请提供详细信息/代码。 如果你使用 BackgroundWorker 运行它,如果它需要 30 分钟,你应该这样做,那么它提供了一个 Cancel 方法。见msdn.microsoft.com/en-us/library/4852et58 【参考方案1】:如果你的捕获是在主线程中完成的,试试这个:
bool abort = false;
private void CaptureSignal()
while (!abort)
// Capture Signal Code ......
private void OnButtonClick(.............)
abort = true;
如果您使用的是BackgroundWorker,您可以发送取消请求。
【讨论】:
如果在主线程中运行,CaptureSignal方法会阻塞任何其他调用;您将无法单击中止。 100% 同意 BackgroundWorker 的建议。 @dash:正确,但 OP 可以在CaptureSignal
内调用 Application.ProcessMessages()
。它很丑,但我已经看过很多次了;)
谢谢你,Marco,我在我的主线程上运行它,如果我想有一个中止按钮作为通用控件,那将是最好的,它会取消当前正在运行的任务。以上是关于如何在windows窗体应用程序c#中中止当前任务的主要内容,如果未能解决你的问题,请参考以下文章
C# Windows 窗体(非 SQL):在新窗体上用整数 +1 填充 DataGridView 行中当前最高数字的文本框