Chr*_*oli 3 .net c# compiler-construction asynchronous
我和我的同事一直在讨论异步程序.
例:
ws.GetAllEventsAsync("123", "123");
ws.GetAllEventsCompleted += new awc5ws.events.GetAllEventsCompletedEventHandler(ws_GetAllEventsCompleted);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,ws是一个Web服务(asmx).
现在,第一行代码是否有可能在编译器到达第二行之前执行并完成,因此不执行回调函数.
那么在这种情况下,在实际执行Web方法之前附加事件处理程序回调会更有意义吗?像这样:
ws.GetAllEventsCompleted += new awc5ws.events.GetAllEventsCompletedEventHandler(ws_GetAllEventsCompleted);
ws.GetAllEventsAsync("123", "123");
Run Code Online (Sandbox Code Playgroud)
我不知道我在这里有多大意义,但我希望你能理解我的观点.如果你能详细而不是肯定或不答案,我将不胜感激.
提前致谢
是的,是的:)
你的第一个例子是竞争条件.如果你运行它,它可能会工作,或者它可能不会.这实际上比根本不工作更糟糕.
有时,调用ws.GetAllEventsAsync
甚至可以同步执行,在这种情况下,错误很明显.当它以异步方式执行时,它可能仍然在主线程附加事件处理程序之前完成,您将错过该事件.
归档时间: |
|
查看次数: |
1627 次 |
最近记录: |