我必須從WCF服務中調用三種不同的異步方法。我有以下方法,其中包括所有三個調用:等待多個異步調用完成?
private async Task CreateMultipleTasksAsync()
{
CrimcaseServiceClient client = new CrimcaseServiceClient(
new BasicHttpBinding(),
new EndpointAddress("http://192.168.1.100/FooService/FooService.svc")
);
client.GetEventCompleted += OnGotEventResult;
client.GetEventAsync(eventInfo);
client.GetLocationsCompleted += OnGotLocationsResult;
client.GetLocationsAsync();
client.GetTypesCompleted += OnGotTypesResult;
client.GetTypesAsync();
}
在所有三個調用完成後,我需要填充一些值。但是,我似乎遇到了如何等待所有三人首先完成的問題。
我已經試過這樣做,使用這種電話,但它仍然不是等待所有的呼叫纔去到下一個代碼位來完成:
private void GrabData()
{
var task = Task.Run(async() => { await CreateMultipleTasksAsync(); });
task.Wait();
}
任何建議將不勝讚賞,因爲我迷失在這個時候做什麼。
謝謝大家。
什麼是你異步調用的方法簽名?另外,你說:*但它仍然在等待所有的調用完成,然後再進入下一個代碼*不是你想要的嗎? –
這是一個錯字 - 對不起。我的意思是說,在進入下一個代碼之前,它不是等待所有的調用完成。在查看生成的呼叫時,它們都被設置爲無效。 (我希望我正確理解你的問題) – BrewingDev
我假設方法簽名是爲異步方法是'無效'返回? –