是否可以使用TPL Task<TResult>
異步調用具有以下簽名的線程安全方法,並檢索布爾返回值和輸出參數?異步調用帶有輸出參數的方法
public bool TryGet(T1 criteria,
out T2 output)
很明顯,我不能使用lambda表達式,因爲輸出參數。另外,我無法通過定義一個如下所示的自定義委託來解決問題,並將其傳遞給Task<TResult>
構造函數,因爲我需要將該條件作爲構造函數不支持的強類型參數傳遞。
public delegate TResult Func<T1, T2, TResult>(T1 arg1,
out T2 arg2);
是最好的選擇來寫一個如下的包裝並異步調用它?
public Tuple<bool, T2> TryGetWrapper(T1 criteria)
{
T2 output;
bool result = obj.TryGet(criteria,
out output);
return new Tuple<bool, T2>(result,
output);
}
只是看起來有點不雅,並有一點點的味道。
感謝。只是想知道我是否錯過了一些明顯的東西。 – 0b101010 2013-04-29 17:57:50