1

構成された番号のループで複数のスレッドを生成する必要があります。サイトの数と、各スレッドには複数の子スレッドがあります。すべてのスレッドを終了した後、データベースにデータを保存するために特定のタスクを実行する必要があります。すべてのタスクが終了したかどうかを知る方法。
私の現在のコード:

List<SocialDataConfig> configList = SetConfiguration();
foreach (SocialDataConfig config in configList)
{
    new Thread(delegate()
    {
        FetchSocialData(config);
    }).Start();
}
// save fetched data into database and log fetched information in database

private void FetchSocialData(SocialDataConfig config)
{
    for (int i = 0; i < config.ThreadCount; i++)
    {
        Thread thread = new Thread(delegate()
        {
            FetchData(54764876, config);
        });
        thread.Start();
    }
}
4

1 に答える 1

1

独自のスレッドを作成する代わりに、C# で新しい Task ライブラリを使用できます。

次に、次のようなものを使用できます。

int n = 10;

// Construct started tasks
Task<int>[] tasks = new Task<int>[n];
for (int i = 0; i < n; i++)
{
    tasks[i] = Task<int>.Factory.StartNew(action, i);
}

// Wait for all the tasks to finish.
Task.WaitAll(tasks);

完全な例を含むWaitAllに関するMSDNドキュメントを次に示します。

于 2012-06-12T09:47:26.623 に答える