& # 8220; System.InvalidOperationException: l'objet est actuellement utilisé ailleurs & # 8221; - comment résoudre ça?

StackOverflow https://stackoverflow.com/questions/246058

  •  05-07-2019
  •  | 
  •  

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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top