4

以下の方法で合計 17 個の SSIS Dtsx パッケージを実行する必要があるコンソール アプリケーションがあります。

[1] 最初のスレッドでは、3 つのパッケージを一度に並列に実行する必要があります [2] 2 番目のスレッドでは、5 つのパッケージを一度に並列に実行する必要があります...

.Net Framework 4.0などの上位バージョンで使用されている並列処理と呼ばれる概念について聞いたことがありますが、 Projcet で同じものを実装する方法がわかりません。

スレッドを使用していくつかのサンプルを試しました。これが私のコード スニペットです。

            Thread.Sleep(2000);
            Thread First = new Thread(new ThreadStart(FirstThread));
            Thread Second = new Thread(new ThreadStart(SecondThread));
            Thread Third = new Thread(new ThreadStart(ThirdThread));
            First.Start();
            Second.Start();
            Third.Start();
    static void FirstThread()
    {
        try
        {
            DTSXProcesser pkgProcess = new DTSXProcesser();
            pkgProcess.ExecutePackage("Customers.csv");
            pkgProcess.ExecutePackage("RouteInfo.csv");
            pkgProcess.ExecutePackage("Items.csv");
        }
        catch (Exception ex)
        {
            Logger.Log("Exception in Execution Of Package. Error : " + ex.ToString());
            Thread.ResetAbort();
        }         

    }

親切に助けて...

4

1 に答える 1

1

.NET 4 の場合:

タスクの使用:

Task[] tasks = new Task[]{
    Task.Factory.StartNew(FirstThread),
    Task.Factory.StartNew(SecondThread),
    Task.Factory.StartNew(ThirdThread)
};

Task.WaitAll(tasks);

またはパラレルクラスで

Action[] actions = new Action[] { 
    FirstThread,
    SecondThread,
    ThirdThread
};

Parallel.ForEach(actions, action => action());

また、メソッド内のロジック ( ...) についても、同じ概念を実装できます (の同じインスタンスに対してメソッドを複数回並行しFirstThreadて実行しても問題がない場合)。ExecutePackageDTSXProcesser

どちらを使用するか疑問に思っている場合は、この質問を見ることができますが、それらはほぼ同等です。

.NET 4.5 および C# 5async awaitでは、キーワードを使用できます。

于 2013-06-06T09:40:46.273 に答える