簡體   English   中英

Task.Run和Func <>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM