Zauważyłam następujące wzór niedawno, ale nie całkowicie zrozumieć wykorzystanie właściwości completedSynchronously:AsyncCallback completedSynchronously
IAsyncResult channelOpenResult = channel.BeginOpen(new AsyncCallback(OnOpenCompleteChannel), channel);
if (channelOpenResult.CompletedSynchronously)
{
CompleteOpenChannel(channelOpenResult);
}
I znowu, w callback:
void OnOpenCompleteChannel(IAsyncResult result)
{
if (result.CompletedSynchronously)
return;
else
CompleteOpenChannel(result);
}
I gdzieś w kodzie jest oczywiście funkcja:
void CompleteOpenChannel(IAsyncResult result) ...
Czy jest to sposób obsługi e asynchroniczne wywołanie różni się w zależności od tego, czy zakończy się bezpośrednio, czy nie? Ale po co go używać w tym przypadku, ponieważ AsyncCallback będzie zawsze wywoływany (prawda?)? Czy ktoś mógłby podać przykład połączenia synchronicznego?