如何中止异步方法?

时间:2011-08-26 11:40:41

标签: c# asynchronous listbox

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

1 个答案:

答案 0 :(得分:0)

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

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

大多数异步。根据我所知,可以使用CancellationToken(仅使用来源的.Token-Property来调用请求。如果没有,您可以使用自己的主题并查看ThrowIfCancellationRequested

或者,如果请求被取消(例如未处理),您可以检查您的EndAsync-Handler,...