【发布时间】:2009-03-11 18:18:10
【问题描述】:
我正在从 C# 应用程序进行异步 Web 服务调用:
{
//Put UI in 'loading' state
...
//Now call web service
webServiceProxy.BeginMyMethod(param, new AsyncCallback(MyCallback), null);
}
private void MyCallback(IAsyncResult res)
{
...
//process result
// Put UI back in normal state (yes I'm marshalling back to the UI thread)
}
主线程将应用置于“等待”模式,然后回调函数结束重新启用控件。我看到一个错误,即 UI 偶尔会永远卡在加载模式中。
现在回调代码中可能只是一个错误(那里有很多),但我在这里向社区提出的问题是:
是否保证会调用“MyCallback”?假设“BeginMyMethod”没有抛出异常,我可以确定 MyCallback 会被执行吗?我在 BeginXXX 函数返回的 IAsyncResult 上看到“CompletedSynchronously”和“IsCompleted”,但我不确定这是否重要。
【问题讨论】:
标签: c# .net web-services