在C#控制台应用程序中并行使用线程概念执行多于2个Dtsx包
发布时间:2020-12-15 21:51:53 所属栏目:百科 来源:网络整理
导读:我有控制台应用程序需要以下面的方式执行总共17个SSIS Dtsx包. [1]在第一个线程中,它应该同时并行执行3个包 [2]在第二个线程中,它应该同时并行执行5个包,依此类推…… 我听说过一个名为parallelism的概念,它正在用于更高版本的.Net Framework 4.0等.但是我不
我有控制台应用程序需要以下面的方式执行总共17个SSIS Dtsx包.
[1]在第一个线程中,它应该同时并行执行3个包 我听说过一个名为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,您可以使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |