【发布时间】:2009-09-03 08:08:05
【问题描述】:
我最近注意到以下模式,但我并不完全掌握 CompletedSynchronously 属性的用法:
IAsyncResult channelOpenResult = channel.BeginOpen(new AsyncCallback(OnOpenCompleteChannel), channel);
if (channelOpenResult.CompletedSynchronously)
{
CompleteOpenChannel(channelOpenResult);
}
然后,在回调中:
void OnOpenCompleteChannel(IAsyncResult result)
{
if (result.CompletedSynchronously)
return;
else
CompleteOpenChannel(result);
}
在代码的某处当然有一个函数:
void CompleteOpenChannel(IAsyncResult result) ...
这是一种根据异步调用是否直接完成而以不同方式处理异步调用的方法吗?但是为什么在这种情况下使用它,因为 AsyncCallback 总是会被调用(会吗?)? 有人可以举一个同步进行调用的例子吗?
【问题讨论】:
标签: c# .net silverlight web-services