程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C# System.ObjectDisposedException 錯誤

C# System.ObjectDisposedException 錯誤

編輯:C#基礎知識
老問題了,還沒解決。情況如下:
C# code

namespace TestSystem
{
public class ClsMain
{
static void Main(string[] args)
{
//異常處理
try
{

Application.Run(new frmMain());


}
catch (Exception ex)
{

WriteError(ex.ToString(), "ProjectStartError");

}
}
}



frmMain窗體裡面用到了好幾個線程,還有socket通信(多線程加異步通信,主要是接收數據),在每個線程調用的方法中都是做了錯誤處理,socket也是做了錯誤處理。在單機環境下面,就是說沒有任何客戶端會發送數據過來。每個線程還是在運行的實現一個功能的。
程序在運行了7,8個小時後,出現了如下錯誤日志,因為是上面捕做到的錯誤,程序就死了。
錯誤日志如下:

2010-06-01 04:53:52[ProjectStartError] desc:System.ObjectDisposedException: ObjectDisposedException
at System.Threading.WaitHandle.CheckResultInternal(Boolean r)
at System.Threading.EventWaitHandle.Set()
at System.Windows.Forms.Control.TASK.MarkDone()
at System.Windows.Forms.Control.TASK.Invoke()
at System.Windows.Forms.Control._InvokeAll()
at System.Windows.Forms.Control.WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.ContainerControl.WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
at System.Windows.Forms.Application.Run(Form fm)
at TestSystem.ClsMain.Main(String[] args)


不知道哪位有好的建議來捕做到具體是哪個環節(方法)出現了問題,或者能從上面的錯誤估計是什麼情況造成的。路過的大俠幫忙看看,不知道的也請幫忙頂一下,謝謝各位了。



可能的原因之一:

比如你有一個接收線程,在拿到數據後嘗試著更新界面(比如一個TextBox),但如果這個界面(Form)已經被關閉銷毀了,那麼ObjectDisposedException就會拋出。



線程的資源有沒有進行釋放呢?

可能是內存沒有得到釋放,越累計越多

最終導致崩潰



什麼引發了ObjectDisposedException

你在使用invoke之前可以判斷你invoke控件是否已經disposed,即控件的disposed屬性
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved