我正在使用一些c#應用程序並使用一些Async調用。我必須使用來自特定供應商的SDK來集成到供應商平臺中。它看起來很喜歡SDK異步方法基於5.0之前的C#,並使用APM模型而不是TPM(我的大多數異步工作都使用了TPM和await命令)。Async和FromAsync
我發現了FromAsync方法將一個APM異步方法封裝到TPM中,但它有一個困難的時間(希望我在正確的路徑上)。
有問題的異步方法稱爲「CommitAsync」,它來自供應商SDK。當我懸停在VS的方法,它輸出這樣的:
EditableListConfigurationObject<UserConfiguration.Property>.CommitAsync(System.ComponentMode.AsyncCompletedEventHandler completedCallback, object userState)
所以我試圖轉換到TPM,到目前爲止,有這樣的(這是引發錯誤):
var x = Task.Factory.FromAsync(userConfigurationObject.CommitAsync, UserCreated);
UserCreated是我的回調函數
private void UserCreated(Object sender, SystemComponentMode.AsyncCompletedEventArgs args)
{}
當我將鼠標懸停在「userConfigurationOBject.CommitAsync在FromAsync方法,它說:‘不能從方法組轉換爲IAsyncResult的’
據我所知,FromAsync中的第一個參數是begin函數,第二個參數是結束/完整函數。如果我正確理解APM異步模型和此SDK,我會假設CommitAsync將作爲begin函數,然後它的回調函數將結束函數?
謝謝!使用TaskCompletionSource,一切都很好。我會對此做更多的研究,以確保我完全理解它,但現在,這讓我感動,並證明它可以完成! –