我有一個桌面應用程序(.net 3.5),它使用經典Web服務與服務器進行通信。
我需要對Web服務功能進行多次調用,等待它們全部完成,然後繼續。等待所有異步Web服務調用返回
我想同時進行這些調用;所以顯然我正在尋求利用MyFunctionAsync
方法。
事情是 - 我不知道如何驗證所有電話已返回。我可能在這裏錯過了一些簡單的同步機制。
這是我想怎麼能夠做到:
public void DoWork()
{
service.MyFuncCompleted+= MyFunc_Completed;
foreach (var i in items)
{
service.MyFuncAsync(i);
syncMechanism.WaitForAnother(1); //signal that we have to wait for 1 more task to finish
}
syncMechanism.WaitForAllTasksToFinsih(); //wait until specified number of tasks have finished
//continue
}
public void MyFunc_Completed(EventArgs e)
{
//process result...
syncMechanism.Signal(1); //signal that 1 task has finished
}
有人知道這樣的事是C#?
「檢查它是否降到零」:你會如何建議這樣做?忙等待? '(while(true){if(counter == 0)break;}'? –
我已經給我的答案添加了一個代碼示例 –