1

以前、別のコンストラクターを介してActionBlockを使用しました。

ActionBlock<TInput> Constructor (Action<TInput>)

しかし、タイトルの1つで、戻りタイプがTaskの場合、ActionBlockが返されたタスクで何をするのかわかりません。コンストラクターに提供された非同期デリゲートをどういうわけか待っているのだと思いますか?手に入れることはできますか?

4

1 に答える 1

3

OK、それは非同期のデリゲートを提供するためのものだと推測すべきでした。その構文に少し慣れていなかったに違いありません。このようなデリゲートの例を次に示します。

var writer = new ActionBlock<string>(async url =>
{
    WebClient wc = new WebClient();
    // using IOCP the thread pool worker thread does return to the pool
    byte[] buffer = await wc.DownloadDataTaskAsync(url);
    string fileName = Path.GetFileName(url);

    string name = @"Images\" + fileName;

    using (Stream srm = File.OpenWrite(name))
    {
        await srm.WriteAsync(buffer, 0, buffer.Length);
    }
});

そのため、デリゲートasyncurl=>はタイプが。であると言えますFunc<String, Task>

例は次のとおりです:http://blogs.microsoft.co.il/blogs/bnaya/archive/2012/01/28/tpl-dataflow-walkthrough-part-5.aspx

于 2013-01-16T21:51:48.180 に答える