J'ai mis en place un processus pour créer de nouvelles tâches pour gérer le traitement de fichiers. Un problème est survenu lorsque j'ai reçu et non géré une erreur d'exception et en cliquant simplement sur le bouton continuer, le processus principal a continué à fonctionner. Maintenant, j'ai aussi trouvé que dans la tâche enfant, j'avais une erreur de conflit de fichiers et comme les tâches s'exécutaient en tant que .exe séparé, j'avais l'impression que tout aurait été thread safe. Donc, pour le premier problème, voici la création de tâches dans le processus principal. GProcess est un projet complet composé de 6 classes. Ceci est ajouté en tant que référence de la bibliothèque de classe à la classe principale de processus form1Gestion des exceptions de fabrique de tâches
Public Class Form1
..Private parser as GProcess.module = new GProcess.module()
dim factory as new taskfactory
factory.startnew(address of parser.main)
try
task.waitall()
catch ae as aggregateexception
for each ex in ae.innerexceptions
logs.insert(ex.message.tostring)
next
finally
parser.ctsources.cancel()
end try
maintenant je suis la chose AggregateException de msdn et ne savez pas comment la mettre en œuvre mais, fondamentalement, ce que je veux est annuler la tâche qui a provoqué l'exception et continuer à exécuter toutes les autres tâches et capturer le fichier sur lequel travaillait la tâche annulée et enregistrer le nom dans mes journaux ou, si possible, redémarrer cette tâche avec le fichier sur lequel elle travaillait ..
Maintenant pour le deuxième numéro que j'ai un xmlwriter étant créé quand une classe est accédée par la tâche qui devrait créer sa propre instance, donc je ne sais pas pourquoi il y a un conflit mais si cela arrive, la tâche/thread annule-t-elle ou est-ce pour accéder au fichier.
....
public class filecleaner
private xmlfile as string = directoryPath & filename
private xwriter as xmltextwriter = new xmltextwriter(xmlfile,nothing)
....
merci pour votre réponse ... J'ai ajouté une modification ci-dessus mais aussi pour clarifier..J'ai tout project.exe ajouté comme référence au processus principal .. il est alors appelé comme une tâche ... Je vais utiliser votre suggestion pour le deuxième numéro – vbNewbie