2010-07-17 95 views
0

我已经写了一个使用vb.net的任务脚本,其中有线程用于代码,问题是我怎么知道什么时候会完成所有的线程,所以我可以返回成功的结果。DTS SSIS-任务脚本和线程?

非常感谢。

回答

0

我认为你需要使用的WaitHandle对象和为WaitAll方法

更多的信息在这里:http://msdn.microsoft.com/en-us/library/system.threading.waithandle.aspx

话虽这么说,我怀疑你可以重构你的包装设计让脚本任务句柄执行,并让SSIS处理执行计划。这给了你想要的并行性,而没有任何使用.net中的多线程编程的麻烦。

一个简单的设置将是n个foreach循环(以串行方式执行),每个循环运行一个分区的工作负载块。

另一个更简单的选项是让包由变量驱动并产生包的多次执行。这可能发生在1-N服务器上以扩展。

+0

是的,我正在做的是如下。 1.从数据库读取数据表记录。 2.将Datatable记录拆分为4部分(例如,如果DataTable记录将8个记录拆分为每个新数据表的2,2,2,2) 3.在new a中执行每个dataTable并执行循环(的foreach)。 4.一旦所有线程完成,我应该通知已完成的当前线程并返回成功。 那么这种解决方案适合这种情况? 谢谢 – user342982 2010-07-21 07:11:21

+0

在这种情况下,我会使用单个数据源,然后使用条件拆分将输入行拆分为4个输出。那么我会将每个输出挂钩到一个任务来执行所需的工作。 SSIS应该很好地为你并行化,没有任何自定义线程代码。 – JasonHorner 2010-07-21 16:18:29