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

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

概述我有控制台应用程序需要以下面的方式执行总共17个SSIS Dtsx包. [1]在第一个线程中,它应该同时并行执行3个包 [2]在第二个线程中,它应该同时并行执行5个包,依此类推…… 我听说过一个名为parallelism的概念,它正在用于更高版本的.Net Framework 4.0等.但是我不确定如何在Projcet中实现它. 我尝试了一些使用线程的示例,这是我的代码片段. Thread.Sle 我有控制台应用程序需要以下面的方式执行总共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关键字.

总结

以上是内存溢出为你收集整理的在C#控制台应用程序中并行使用线程概念执行多于2个Dtsx包全部内容,希望文章能够帮你解决在C#控制台应用程序中并行使用线程概念执行多于2个Dtsx包所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1229868.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存