如何在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#如何实现关闭当前窗体并打开另一个已经创建的窗体。

C# 退出程序方法

C# Windows 窗体(非 SQL):在新窗体上用整数 +1 填充 DataGridView 行中当前最高数字的文本框

c#多线程

如何在任务栏顶部全屏显示 Windows 窗体? [复制]

C#窗体全屏功能