Mise à jour Voici un problème intéressant que je rencontre. Je dois avoir une boîte de dialogue de progression quand un processus d'arrière-plan est en cours d'exécution. Normalement, cela fonctionnerait mais le problème est que j'ai besoin de définir des données statiques publiques dans le processus d'arrière-plan. Voici un exemple de ce que je tente d'accomplir:Boîte de dialogue de progression multithread WPF
public partial class MainWindow : Window { public static Service binding; public static Result lr; public progressDialog dlg; private void login() { string sPwd = txtPwd.Password; string sEmail = txtEmail.Text; binding = new Service(); lr = binding.login(sEmail, sPwd); } private void btnLogin_Click(object sender, RoutedEventArgs e) { BackgroundWorker worker = new BackgroundWorker; worker.DoWork += new DoWorkEventHandler(worker_DoWork); worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted) worker.RunWorkerAsync(); dlg = new progressDialog(); dlg.Show(); login(); } private void worker_DoWork(object sender, DoWorkEventArgs e) { e.Result = login(); } private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { this.Hid(); Window1 newWindow = new Window1(); newWindow.Show(); dlg.Close(); }
Je sais que cela signifie, il ne fonctionnera pas parce que la connexion() est un vide et ne retourne pas vraiment une valeur à utiliser avec e.Result dans l'événement DoWork. Cependant, j'ai mis en place une classe de connexion pour passer les paramètres et je reçois toujours des erreurs indiquant que je ne peux pas accéder au thread de l'interface utilisateur. Le problème principal est que lr et la liaison sont accédés par une autre fenêtre donc ils doivent être des données statiques publiques (à partir de l'autre fenêtre je mets le service public static binding = MainWindow.binding;). J'ai juste un peu de mal à comprendre comment régler ça.
Merci. Je pense que je l'ai fouetté. – Joe