Je construis un complément VSTO : j'ai besoin d'exécuter un thread en arrière-plan, mais ce thread doit accéder à des composants COM (j'ai implémenté IMessageFilter pour rendre cette messagerie aussi sûre que possible). Tous les threads qui accèdent à OLE ou COM doivent être STA je crois ; donc, BackgroundWorker est exclu.
Je suis heureux d'utiliser le thread normal et de définir ApartmentState sur STA, mais j'ai aussi besoin de savoir quand ce thread est terminé pour pouvoir mettre à jour certaines choses de l'interface utilisateur. Je ne veux pas Join() car cela bloquera l'interface utilisateur (c'est toute la raison pour laquelle j'utilise des threads !).
Est-il préférable de déclencher une sorte d'événement à la fin de ma méthode threadée, et de faire les choses terminées nécessaires à l'événement ?
OU
Est-il préférable de sonder
while(!_threadFinishedStarting)
{
Application.DoEvents();
Thread.Sleep(100);
}
Comme mentionné ici: C#.net - Comment alerter le programme que le thread est terminé (événement basé sur l'ensemble) ?
Merci beaucoup