& # 8220; System.InvalidOperationException: l'objet est actuellement utilisé ailleurs & # 8221; - comment résoudre ça?
Question
J'ai eu cette erreur en essayant de mettre à jour une image. Il s’agissait d’une mise à jour inter-thread, mais j’ai utilisé .Invoke (). Cela ne devrait donc pas être le problème, si.
La solution
(Répondant à ma propre question, pour les autres et pour référence future)
Je pense (pas encore tout à fait sûr) que c'est parce qu'InvokeRequired retournera toujours false si le contrôle n'a pas encore été chargé / affiché. J'ai effectué une solution de contournement qui semble fonctionner pour le moment, qui consiste à référencer simplement le descripteur du contrôle associé dans son créateur, comme suit:
var x = this.Handle;
(Voir http://ikriv.com:8765/en /prog/info/dotnet/MysteriousHang.html - down? version mise en cache )
(Question connexe: code de plaque de chaudière remplacement - ce code a-t-il un problème? )
Autres conseils
Si le descripteur n'existe pas encore, vous pouvez le forcer en sous-classant le contrôle et en appelant CreateHandle
; Cependant, la plus grande question est: pourquoi faites-vous des choses avec un formulaire qui n'a pas été chargé? Personnellement, je ne commencerais une telle opération qu'après le chargement.