Je tente d'utiliser un objet Microsoft.SqlServer.Management.Smo.Restore pour restaurer une base de données SQL Server 2000. Juste avant de commencer l'opération de restauration, je change le texte d'une étiquette pour que l'utilisateur sache ce qui se passe. Cependant, le texte modifié n'est pas visible sur l'interface graphique (c'est-à-dire, le texte reste le même) avant qu'après la ligne fullRestore.Wait().Label.Text change être bloqué?
lblStatus.Text = "Restoring Database";
Restore fullRestore = new Restore();
// Configure fullRestore
fullRestore.SqlRestore(_server);
fullRestore.Wait();
La chose étrange est, lblStatus ne éventuellement affichage « Restauration de base de données », mais pas avant après la restauration est terminée. Des idées?
appel lblStatus.Refresh() ne fera aucune différence, tout ce qui est fait Invalide le contrôle de sorte qu'il sera repeindre, la repaint réelle ne peut toujours pas se produire jusqu'à ce que le thread graphique est disponible. –
@Simon - il repeint avant l'appel qui verrouille le thread graphique. –
Intéressant, j'ai juste essayé lblStatus.Refresh() et fait exactement ce dont j'ai besoin. Je sais qu'un thread d'arrière-plan pour Wait() serait une meilleure solution, mais c'est assez simple et fonctionne pour le moment. – Donut