2010-07-17 6 views
0

J'ai écrit un script de tâche en utilisant vb.net qui a un thread utilisé dans le code, le problème est de savoir comment je peux savoir quand tous les threads seront terminés pour que je puisse retourner le résultat du succès.DTS SSIS - Script de tâche et filetage?

Merci beaucoup.

Répondre

0

je pense que vous devez utiliser un objet WaitHandle et la méthode WaitAll

plus d'info ici: http://msdn.microsoft.com/en-us/library/system.threading.waithandle.aspx

Cela dit, je pense que vous pouvez factoriser la conception de votre colis pour laisser la tâche de script poignée l'exécution, et laissez SSIS gérer la planification d'exécution. Cela vous donne le parallélisme que vous voulez sans les inconvénients de la programmation multi-thread dans .net. Une configuration simple serait n boucles foreach (qui s'exécutent en série) exécutant chacune un morceau partitionné de la charge de travail.

Une autre option plus simple est que le paquet soit piloté par des variables et génère plusieurs exécutions du paquet. Cela peut se produire sur tous les serveurs 1-N à l'échelle.

+0

Oui, ce que je fais est comme suivant. 1. Lisez les enregistrements DataTable de la base de données. 2. diviser les enregistrements Datatable en 4 parties (par exemple, si les enregistrements DataTable ont 8 enregistrements comme split en tant que 2,2,2,2 pour chaque nouveau datatable) 3. Exécutez chaque dataTable dans un nouveau Thread et faites une boucle (pour chaque). 4. une fois tous les threads terminés, je devrais notifier le thread en cours qui a été terminé et retourne succcess. est donc cette solution appropriée pour ce cas ?? Merci – user342982

+0

Dans ce cas, j'utiliserais une source de données unique, puis j'utiliserais une division conditionnelle pour diviser les lignes entrantes en 4 sorties. Ensuite, j'accrocherais chaque sortie à une tâche pour effectuer le travail nécessaire. SSIS devrait paralléliser cela bien pour vous, sans aucun code de thread personnalisé. – JasonHorner

Questions connexes