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.
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
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