類似但不同的對這個問題How do you implement an async action delegate method?WPF dispatcher.invokeasync Func鍵<T,T,TResult>
嗨, 我有兩個參數並返回結果, 在計算它會調用awaitable功能 的參數結果的方法該方法只能在另一個線程上訪問,所以我使用了dispatcher.CheckAccess,dispatcher.Invoke或dispatcher.InvokeAsync。 迄今爲止獲得的最佳結果是構建和運行的東西,但即使調用調用被調用,該函數也不會受到影響。
我在引用的線程中發現了由於命名T結果而引起混淆的例子,而我認爲T是一個in參數。
我的功能看起來是這樣的:
private async Task<TResult>> fn(object arg1, object arg2){return await x(arg1,arg2);}
調度代碼看起來是這樣的:
if (dispatcher.CheckAccess())
result= await fn(a,b);
else
result=dispatcher.InvokeAsync<TResult>(fn(a,b)); // this is incorrect syntax
希望斯蒂芬·克利裏能救我:-)我找不到像這樣的例子C#食譜中的併發。大概我看着這種錯誤的方式?
感謝 馬丁
如果你知道你的'InvokeAsync'的調用不正確,爲什麼不能去MSDN,知道正確的語法? 1)我發現'InvokeAsync'沒有超過'Func <..., ...>'作爲一個參數; 2)在C#中,不能將方法調用作爲參數傳遞。可能你想使用'InvokeAsync(()=> fn(a,b))' – Maxim
雖然[mm8's answer](https://stackoverflow.com/a/44631088/263693)會讓你編譯代碼,但我通常推薦構建代碼,以便後臺操作不需要UI層的存在。例如,首先獲得'TResult',然後*然後*開始後臺操作。 –