gpt4 book ai didi

c# - 在 C# 控制台应用程序中使用线程概念并行执行超过 2 个 Dtsx 包

转载 作者:行者123 更新时间:2023-11-30 12:47:25 25 4
gpt4 key购买 nike

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

[1] 在第一个线程中,它应该同时并行执行 3 个包[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();
}

}

请帮忙...

最佳答案

使用 .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...)你可以实现相同的概念(如果没有问题多次执行ExecutePackage方法DTSXProcesser 的同一实例并行处理)。

如果您想知道使用哪一个,可以查看此 question但它们几乎是等价的。

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

关于c# - 在 C# 控制台应用程序中使用线程概念并行执行超过 2 个 Dtsx 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16955333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com