【发布时间】:2014-05-20 17:21:45
【问题描述】:
在我的代码中,我使用BeginInvoke 来触发委托(从文件中加载一些配置)。我希望我的 UI 保持响应,所以我认为这样做会起作用:
LoadConfig lc = new LoadConfig(doLoadConfig);
IAsyncResult asyncResult = lc.BeginInvoke(null, null);
while (!asyncResult.IsCompleted)
{
asyncResult.AsyncWaitHandle.WaitOne(500, false);
}
asyncResult.AsyncWaitHandle.Close();
bool bLoadResult = lc.EndInvoke(asyncResult);
问题是它挂在等待位上。有什么方法可以让我等待我的委托完成,同时保持 UI 线程处于活动状态(有点像在 .NET 4.5 中使用 async/await)?
我正在使用 .NET 3.5 BTW。
【问题讨论】:
-
参考《异步调用完成时执行回调方法》here。
-
那么回调是我唯一的选择吗?
标签: c# multithreading user-interface asynchronous delegates