簡體   English   中英

表格以某種方式處理

[英]Form gets disposed somehow

我有一個客戶端 - 服務器應用程序,我使用經典的套接字和線程來接收/發送數據和監聽客戶端。

應用程序工作正常,但在一些隨機時間后,我得到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)

該代碼是從客戶端Socket線程調用的 ,我使用Invoke()方法在UI線程上運行代碼。

我確定我不會手動處理表單也不會使用Close() (用戶點擊關閉按鈕關閉表單),所以我不知道是什么原因導致它被處理掉。

編輯 :窗體關閉期間不會拋出異常 - 它完全隨機發生。

您是否嘗試重寫Dispose方法並在其中設置斷點? callstack可能會告訴你它處理的原因和位置。

我有一個類似的問題,我只是隱藏一個表格,從來沒有關閉它或處置它。

處理表單根本原因是由於“取消”按鈕的DialogResult實際上強制表單關閉,然后處置是隱式的。

為了解決這個問題,我剛從表單中刪除了DialogResult beaviour。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM