J'utilise un seul modèle de producteur-consommateur unique avec une file d'attente bloquante. Je voudrais que le producteur, lorsqu'il a fini de produire, attende que la file d'attente se vide avant de revenir.Comment attendre le vidage d'une file d'attente de blocage par le travailleur
J'ai mis en œuvre le BlockingQueue suggéré here par Marc Gravell.
Dans mon modèle, le producteur (renderer) utilise des événements pour notifier le travailleur (imprimante) lorsqu'un fichier a été rendu (le worker place l'élément en attente) et quand chaque fichier a été rendu (terminé).
À l'heure actuelle, lorsque le rendu est terminé, la méthode se termine et le worker est tué, donc je me retrouve avec 10-15 fichiers rendus qui n'ont pas été imprimés.
Je souhaite que le gestionnaire d'événements finis se bloque jusqu'à ce que la file d'attente ait été vidée, par exemple, lorsque tous les fichiers sont imprimés. Je veux ajouter quelque chose comme une méthode "WaitToClose()" qui bloquera jusqu'à ce que la file soit vide.
(Would ayant le jeu de thread de travail à IsBackground = true
faire une différence?)
Je pense que Thread.IsBackground = true permet au processus de se terminer même si le thread est toujours en cours d'exécution. –