我有一個功能:異步和並行執行的功能
int f1(int a)
{
return a;
}
int f2(int a)
{
return a*2;
}
我想執行的功能異步並行,等待結果和總結,然後結果。我可以使用代碼
var result1 = Task.Run(() => f1(5));
var result2 = Task.Run(() => f2(10));
await Task.WhenAll(result1, result2);
int result = result1.Result + result2.Result;
這很酷。但什麼,如果我的功能與回調
void f1(Action<int> action, int a)
{
action.Invoke(a);
}
void f2(Action<int> action, int a)
{
a = a*2;
action.Invoke(a);
}
f1(result => Console.WriteLine("result1 = {0}", result), 5);
f2(result => Console.WriteLine("result2 = {0}", result), 10);
工作,我不能重寫這個功能,使用他人代碼此功能。在這種情況下,我可以解決我的代碼不像地獄的問題?
我不確定我瞭解您的問題?這些回調將在各自的任務中同步......是你在問什麼? –
我不知道如何執行這些功能,然後求和結果。我只能在回調函數中執行第二個函數。但它不是平行的。 – Alexandr