[問題] 遇到"無法存取已處置的物件"

看板C_Sharp作者 (無法控制的思緒)時間16年前 (2010/01/02 04:14), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/2 (看更多)
為了讓label隨著計算不斷地更新 所以我設定了 delegate void SetLabelAsCallBack(string text); 在thread跑的時候 會呼叫下面這個function來更新label private void renderLableTimes(string timesNow) { if (this.labelEpochNow.InvokeRequired) { SetLabelAsCallBack labelBack = new SetLabelAsCallBack(renderLableEpochs); this.Invoke(labelBack, new object[] { timesNow }); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 問題出在這一行 顯示的例外是 ObjectDisposedException 無法存取以處置的物件 } else { this.labelEpochNow.Text = "Times" + timesNow; } } 我的程式是這樣的 啟動程式之後 label會不斷地更新該label的數值 然後我有另外一個地方(B地方)會使用到該label的值(就是上面的 timesNow) 我設定了一個checkBox來決定B地方是否執行(其實就是畫圖) 假如程式一開始的地方B處就是執行的 就很順利的一直跑 當程式正在跑的時候 我想讓B停止畫圖 程式繼續跑 只剩下label繼續更新數值 這個時候就會當掉出現上面的錯誤例外 我查了網路 用try catch將this.Invoke(....)這行包起來之後 有出現其他的錯誤例外 最後是跑到 Application.Run(new MyGame()); 顯示IndexOutOfRangeException例外 或者是 NullReferenceException例外 但我不知道該怎麼去處理這樣的問題 是因為thread在跑的關係 導致原本我的程式MyGame變成了null 以至於讀取不到timesNow的數值嗎@@? 煩請板上大大可以幫我解決這個難題~"~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.44.27

01/02 08:35, , 1F
try to google multi thread in C#
01/02 08:35, 1F

01/02 23:16, , 2F
我照著你文字上的描述自己實作了一次 沒有出現這樣的問題
01/02 23:16, 2F

01/02 23:18, , 3F
this.Invoke(labelBack, new object[] {timesNow});這行
01/02 23:18, 3F

01/02 23:19, , 4F
究竟是哪個東西變成null你看一下
01/02 23:19, 4F

01/04 20:34, , 5F
自問自答 因為我在畫圖的地方 有一個line.Add(X,Y);的動作
01/04 20:34, 5F

01/04 20:35, , 6F
因為加入太多數據 導致line的點數爆掉了 才會有這些問題~"~
01/04 20:35, 6F
文章代碼(AID): #1BFbV0S8 (C_Sharp)
文章代碼(AID): #1BFbV0S8 (C_Sharp)