在C#控制台应用程序中并行使用线程概念执行多于2个Dtsx包

我有控制台应用程序需要以下面的方式执行总共17个SSIS Dtsx包.

[1]在第一个线程中,它应该同时并行执行3个包
[2]在第二个线程中,它应该同时并行执行5个包,依此类推……

我听说过一个名为parallelism的概念,它正在用于更高版本的.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();
        }         

    }

请帮助……

解决方法

使用.NET 4:

使用任务:

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

Task.WaitAll(tasks);

或与Parallel Class

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

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

对于方法中的逻辑(FirstThread …),您可以实现相同的概念(如果对于同一个DTSXProcesser实例并行执行多次ExecutePackage方法没有问题).

如果你想知道使用哪一个你可以看到这个question,但它们几乎相同.

使用.NET 4.5和C#5,您可以使用async await关键字.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...