gpt4 book ai didi

c# - 取消异步 Web 服务调用

转载 作者:行者123 更新时间:2023-12-02 13:23:06 25 4
gpt4 key购买 nike

我需要能够取消对我的网络服务进行的异步调用。我拥有的一种解决方案是使用管理自己的线程,并使用 SOAP 客户端的同步方法。这工作得很好,但需要一些更细粒度的线程管理。

如果我使用通过添加 Web 服务引用提供的这两种模式中的任何一种,请说:

var Client = new ASL_WS.SvcSoapClient()
IAsyncResult result = Client.BeginAuthenticateUser(Email, Password, new AsyncCallback(AuthCompleted));

var Client = new ASL_WS.SvcSoapClient()
Client.AuthenticateUserCompleted += AuthCompleted;
Client.AuthenticateUserAsync(Email, Passsword);

这两种模式中的任何一种都可以让我取消请求吗?一种用例可能是:用户登录,但想要在身份验证调用完成之前取消。

当然,我可以通过修改传递给这些调用的 asyncState 并将其设置为禁用 UI 更新来以不同的方式实现此目的,但这不是我想要的。

我可以取消所有未完成的操作吗? Client.Abort() 是否取消此类操作。如果有很多异步请求都被取消怎么办?还有其他 API 方法可以做到这一点吗?

最佳答案

是的,您可以使用Abort方法,但请记住以下注意事项。您还可以使用CancelAsync .

中止注释:http://msdn.microsoft.com/en-us/library/aa480512.aspx

当您调用Abort方法时,任何未完成的请求仍将完成,但完成时会出现错误。这意味着如果您使用回调,您的回调函数仍将针对每个未完成的请求被调用。当调用 EndInvoke 方法时,或者在我们的例子中,调用包装函数 EndDelayedResponse 时,将生成一个错误,指示底层连接已关闭。

CancelAsync 示例:http://www.codeproject.com/KB/cpp/wsasync.aspx

关于c# - 取消异步 Web 服务调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7689031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com