Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何中止异步方法?_C#_Asynchronous_Listbox - Fatal编程技术网

C# 如何中止异步方法?

C# 如何中止异步方法?,c#,asynchronous,listbox,C#,Asynchronous,Listbox,我从异步方法获取数据。例如,我有两个列表框。当第一个列表框中发生选择更改事件时,它向异步方法发送请求,并获取第二个列表框的项目源。如果在此异步方法完成之前,更改第一个列表框中的选择将引发异常。如何在完成之前中止previus异步调用?这将需要一些工作。 目前最简单的方法可能是Rx框架(Reactiveextensions)。 看看这个 如果您不想走这条路(需要一些学习),那么您必须提供一些机制来停止运行异步。请求。您可以使用System.Threading.ManualResetEvent或通过

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

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

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

最异步的。据我所知,可以使用(仅使用源代码)调用请求。如果没有,您可以使用自己的线程,并与检查


或者,您可以检查EndAsync处理程序是否应取消请求(例如,未处理),…

向我们展示EventHandler的代码。方法在web服务中,我只发送参数和回调方法,然后记住您请求的值并在回调中进行检查,如果更改了-如果更改了,则忽略您获得的数据-如果您可以提供某种用户信息(对象-通常是这样)对于调用,如果无法从响应中读取此信息,则可以向调用提供此信息。已解决问题。使用bool isLoadingResourcesFinished。当我尝试调用方法时,如果(isLoadingResourcesFinished){..isLoadingResourcesFinished=false}。在回调方法中,我对其进行了验证。它是有效的。这可能有效,但当答案在途中时,用户无法更改其选择。最好不要停止这一点,只是检查你是否得到了正确的答案回来-但做你喜欢或你的规格告诉你:)