J'ai une application client-serveur, dans laquelle j'utilise des Sockets et des threads classiques pour recevoir/envoyer des données et écouter des clients.Le formulaire est en quelque sorte éliminé
L'application fonctionne très bien, mais après un certain temps au hasard je reçois le ObjectDisposedException:
System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'MainForm'.
at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
at System.Windows.Forms.Control.Invoke(Delegate method)
Ce code est appelé à partir de fil de socket client et j'utiliser Invoke() méthode pour exécuter le code sur Fil d'interface utilisateur.
Je suis sûr que je ne dispose pas le formulaire manuellement ni en utilisant Fermer() (le formulaire est fermé par l'utilisateur en cliquant sur le bouton Fermer), donc je ne sais pas ce qui pourrait causer son élimination.
Modifier: Exception n'est pas jeté lors de la fermeture de forme - il arrive tout à fait au hasard.
Avez-vous trouvé une solution à ce problème? J'ai un problème similaire, bien qu'il ne s'agisse pas d'un formulaire. Ou vous souvenez-vous même, comme c'était il y a plus d'un an. :) Sinon, pas de problème. – M3NTA7
Non, je ne me rappelle pas quel était le problème. Cependant, je suis assez sûr, que le problème était dans mon code, que la forme a été éliminée. Donc, fondamentalement, ma solution ne serait même pas adaptée à votre problème. Vous devriez regarder de plus près votre code (avec le débogage, bien sûr) et trouver le coupable. – mnn