如何中止异步方法

本文关键字:异步方法 何中止 | 更新日期: 2023-09-27 18:06:48

我从异步方法获得数据。例如,我有两个列表框。当选择改变事件发生在第一个列表框,它发送请求异步方法,并获得第二个列表框的项目源。如果在此异步方法完成之前,更改了第一个ListBox中的选择,方法将引发异常。如何在完成之前中止以前的异步调用?

如何中止异步方法

这需要一些工作。目前最简单的方法可能是Rx-Framework (Reactiveextensions)。看看这个网站

如果你不想走这条路(需要一些学习),那么你必须提供一些机制来停止运行异步。请求。你可以通过System.Threading.CancellationTokenSource或System.Threading.ManualResetEvent来实现。两者都可以用来标记正在运行的任务/线程的取消,但第一个可能更清楚。

大多数异步。据我所知,可以使用CancellationToken(只需使用源的. token - property)来调用请求。如果没有,你可以使用你自己的线程并使用ThrowIfCancellationRequested检查。

或者你可以检查你的EndAsync-Handler是否应该取消请求(例如未处理),…