![](/img/trans.png)
[英]Why is the call ambiguous? 'Task.Run(Action)' and 'Task.Run(Func<Task>)'
[英]Task.Run and Func<>
如何運行返回值並獲取參數的任務? 我看到有一個重載方法Task.Run<TResult>(Func<TResult>)
但我如何在那里傳遞參數?
Func<TResult>
不接受參數。 通常,您將使用lambda表達式捕獲參數。 例如:
public void DoSomething(string text)
{
Task<int> task = Task.Run(() => text.Length);
...
}
這里的text
是一個捕獲的變量 ...所以即使你只是創建一個Func<int>
,它也使用方法參數。
您可以使用Task.Factory.StartNew()重載來傳入一個“狀態”對象,該對象包含您要使用的所有參數。 這是傳遞NameValueCollection的一個非常基本的示例,但您顯然可以傳入任何類型的對象。
Task<bool>.Factory.StartNew(
( a ) => {
NameValueCollection nvc = a as NameValueCollection;
if( nvc != null ) {
nvc.AllKeys.ForEach( k => Console.WriteLine( nvc[k] ) );
}
return true;
},
new NameValueCollection() { { "param1", "hithere!" } } );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.