gpt4 book ai didi

C# 异步调用(本例中为 ASMX WebServices)

转载 作者:行者123 更新时间:2023-11-30 13:49:52 25 4
gpt4 key购买 nike

我和我的同事一直在讨论异步过程。

例子:

ws.GetAllEventsAsync("123", "123");
ws.GetAllEventsCompleted += new awc5ws.events.GetAllEventsCompletedEventHandler(ws_GetAllEventsCompleted);

ws 在这种情况下是一个网络服务 (asmx)。

现在,是否有可能第一行代码在编译器到达第二行之前执行并完成,因此没有执行回调函数。

那么在这种情况下,在实际执行 Web 方法之前附加事件处理程序回调是否更有意义?像这样:

ws.GetAllEventsCompleted += new awc5ws.events.GetAllEventsCompletedEventHandler(ws_GetAllEventsCompleted);
ws.GetAllEventsAsync("123", "123");

我不知道我说得有没有道理,但我希望你能理解我的意思。如果您能详细说明而不是回答是或否,我将不胜感激。

提前致谢

最佳答案

是的,是的:)

您的第一个示例是竞争条件。如果你运行它,它可能会工作,也可能不会。这实际上比根本不工作更糟糕。

有时,对 ws.GetAllEventsAsync 的调用甚至可能同步执行,在这种情况下,错误很明显。当它异步执行时,它可能仍会在您的主线程附加事件处理程序之前完成,您将错过该事件。

关于C# 异步调用(本例中为 ASMX WebServices),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8035985/

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