私はクライアントサーバーアプリケーションを持っており、データの送受信とクライアントのリッスンに従来のソケットとスレッドを使用しています。
アプリケーションは正常に動作しますが、ランダムな時間の後に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)
そのコードはクライアントのソケットスレッドから呼び出され、Invoke()メソッドを使用してUIスレッドでコードを実行します。
フォームを手動で破棄したり、Close()を使用したりしない(ユーザーが[閉じる]ボタンをクリックするとフォームが閉じられる)ことはないと確信しているので、何が原因で破棄されるのかわかりません。
編集:フォームを閉じるときに例外はスローされません-完全にランダムに発生します。