J'ai une boîte de dialogue Windows Forms, où une opération plus longue est en cours (asynchron) dans un travail backgroundworker. Pendant cette opération je veux changer certaines valeurs sur le formulaire (étiquettes, ...). Mais lorsque l'arrière-plan tente de modifier quelque chose sur le formulaire, j'obtiens l'erreur "Opération croisée pas valide"! Comment ce problème peut-il être résolu?Comment résoudre le problème "Opération croisée pas valide" Problème?
Répondre
Appelez la méthode ReportProgress
du travailleur, et gérer la ProgressChanged
de mettre à jour l'état actuel.
Vérifiez si l'appel est requis, puis appelez BeginInvoke.
private void AdjustControls()
{
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(this.AdjustControls));
}
else
{
label1.Text = "Whatever";
}
}
J'ai essayé ceci. Mais ça ne marche pas. Pouvez-vous me donner plus de détails. Merci d'avance! – uhu
Désolé ma mauvaise, je l'ai réparé un peu. Si AdjustControls prend des paramètres, par exemple, s'il s'agit d'un gestionnaire d'événements, vous ne pouvez pas utiliser MethodInvoker, vous devez définir un délégué pour cela. – Kurt
Je me sens un peu bizarre en train de creuser ma propre corne ici, mais vous pouvez trouver un peu d'utilisation de la bibliothèque ThreadSafeControls que j'ai écrite exactement dans ce but.
Vous ne pouvez pas modifier les contrôles directement dans un thread qui ne les a pas créés. Vous pouvez utiliser une méthode invoke comme indiqué ci-dessus ou vous pouvez utiliser l'événement BackgroundWorker ProgressChanged.
code utilisé à l'intérieur BackgroundWorker DoWork:
myBackgroundWorker.ReportProgress(50); // Report that the background worker has got to 50% of completing its operations.
code utilisé à l'intérieur BackgroundWorker ProgressChanged:
progressBar1.Value = e.ProgressPercentage; // Change a progressbar on the WinForm
- 1. Opération croisée pas valide
- 2. Comment résoudre le problème
- 3. Comment peut résoudre "opération Cross-thread non valide"?
- 4. comment résoudre le problème nsusredefaults
- 5. comment résoudre le problème de blocage?
- 6. Comment résoudre le problème suivant dans VC++
- 7. comment résoudre le problème de tri
- 8. Comment résoudre ce problème bad_alloc?
- 9. WebService Problème Enum Value est pas valide
- 10. Comment résoudre ce problème UITextView
- 11. Comment résoudre ce problème jQuery
- 12. Problème avec la compilation croisée icu
- 13. Comment résoudre ce problème Haskell?
- 14. Résoudre pour x Problème
- 15. Opération croisée pas valide: Contrôle accédé à partir d'un thread autre que le thread sur lequel il a été créé
- 16. AS3 programmation croisée entre 2 problème
- 17. Impossible de résoudre le problème array_diff
- 18. pas en mesure de résoudre le problème balisage
- 19. L'application iOS n'a pas réussi à résoudre le problème?
- 20. Résoudre le problème NP-complet dans XKCD
- 21. comment résoudre le problème avec le contrôleur de modelview
- 22. Comment résoudre ce problème de procédure stockée
- 23. Résoudre le problème d'aliasing en C++
- 24. Comment résoudre ce problème dans JasperReport?
- 25. Comment résoudre ce problème de rotation?
- 26. comment puis-je résoudre ce problème htaccess
- 27. comment résoudre un problème de cyclisme maven?
- 28. Comment résoudre ce problème avec l'extension JSP?
- 29. Comment résoudre Internet Explorer ne peut pas ouvrir le site http://www.xyz.com/map.htm opération abandonnée?
- 30. Comment résoudre problème bloack UIThread dans iPhone
Ceci est expliqué ici: http://msdn.microsoft.com/en- us/library/ms993020 –
Mieux vaut commencer ici: http://msdn.microsoft.com/en-us/library/ms951089 Au début de la série! –