Appelez MessageBox à partir du thread async avec Form1 en tant que parent
Après avoir cliqué sur button1
placé sur form1
le programme vérifie si une nouvelle version est disponible (via internet), mais le faire dans le nouveau thread (pour ne pas figer la forme pendant l'enregistrement).
Lorsque la nouvelle version est disponible ou pas, le MessageBox
est indiqué, mais il n'a pas de parent (parce qu'il a été appelé à partir du thread, et non directement à partir de la form1
).
Comment faire de la MessageBox
d'affichage avec form1
en tant que parent?
source d'informationauteur daftu | 2011-03-18
Vous devez vous connecter pour publier un commentaire.
La commutation de thread principal et de montrer MessageBox avec
form1
parent.Alors que la réponse sélectionnée fournit une belle façon d'afficher les
MessageBox
à partir d'un thread asynchrone, il ne gère pas le cas où vous souhaitez récupérer lesDialogResult
à partir de ceMessageBox
.Si vous êtes à la recherche de retour d'un
DialogResult
de la invoquéeMessageBox
affiche en haut de l'Form
. Ensuite, vous devez utiliser leFunc
délégué au lieu de laAction
délégué.Action
délégués toujours le retour de vide, alors queFunc
a une valeur de retour.Voici une petite méthode que j'ai conçu pour gérer ce scénario particulier:
Bien que ce n'est pas généralement considéré comme la meilleure pratique ou design, il va travailler dans un pincement.
Essayez d'utiliser un backgroundworker.
Dans mon cas, j'étais dans une autre classe et avait une référence pour une zone de texte, j'ai donc utilisé le code ci-dessous: