如何在WinForm中实现异步任务的取消与中断

   2024-10-01 9650
核心提示:要在WinForm中实现异步任务的取消和中断,可以使用CancellationToken来实现。以下是一种通用的方法:首先,在WinForm界面中创建

要在WinForm中实现异步任务的取消和中断,可以使用CancellationToken来实现。以下是一种通用的方法:

首先,在WinForm界面中创建一个取消按钮,当用户点击此按钮时,触发取消操作。

创建一个CancellationTokenSource对象,并将其Token属性传递给异步任务方法。

在异步任务方法中,定期检查CancellationToken的IsCancellationRequested属性,如果为true,则抛出OperationCanceledException异常来中断任务。

在取消按钮的Click事件处理程序中,调用CancellationTokenSource的Cancel方法来取消任务。

下面是一个简单的示例代码:

private CancellationTokenSource cancellationTokenSource;private async void StartAsyncTask(){    cancellationTokenSource = new CancellationTokenSource();        try    {        await Task.Run(() =>        {            for (int i = 0; i < 100; i++)            {                // 检查取消标记                if (cancellationTokenSource.Token.IsCancellationRequested)                {                    throw new OperationCanceledException();                }                                // 执行异步任务                // 例如:Thread.Sleep(1000);            }        }, cancellationTokenSource.Token);    }    catch (OperationCanceledException)    {        // 任务被取消        MessageBox.Show("任务已取消");    }}private void btnCancel_Click(object sender, EventArgs e){    if (cancellationTokenSource != null)    {        cancellationTokenSource.Cancel();    }}

在上面的示例中,StartAsyncTask方法启动一个异步任务,并在每次循环中检查取消标记。取消按钮的Click事件处理程序调用Cancel方法取消任务。当任务被取消时,会捕获OperationCanceledException异常并显示一个消息框。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号