J'ai eu cette erreur en essayant de mettre à jour une image. Il s'agissait d'une mise à jour cross-thread, mais j'ai utilisé .Invoke(), ce qui ne devrait pas être le problème, le cas échéant."System.InvalidOperationException: l'objet est actuellement utilisé ailleurs" - comment résoudre ce problème?
Répondre
(répondre à ma propre question, pour d'autres, et pour référence future)
Je pense (pas encore tout à fait sûr) que ce soit parce que InvokeRequired retourne toujours false si le contrôle n'a pas encore été chargé/montré. Je l'ai fait une solution qui semble fonctionner pour le moment, ce qui est simple référence la poignée du contrôle associé à son créateur, comme suit: (? Voir http://ikriv.com:8765/en/prog/info/dotnet/MysteriousHang.html - bas cached version)
var x = this.Handle;
(Question connexe: Boiler plate code replacement - is there anything bad about this code?)
Si le handle 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 Load.
Le formulaire est chargé, mais il s'agit de contrôles qui sont chargés dynamiquement dans un contrôle utilisateur qui n'est pas encore défini sur Visible = true (je pense). – Benjol