[問題] 遇到"無法存取已處置的物件"
為了讓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
01/02 08:35, 1F
→
01/02 23:16, , 2F
01/02 23:16, 2F
→
01/02 23:18, , 3F
01/02 23:18, 3F
→
01/02 23:19, , 4F
01/02 23:19, 4F
→
01/04 20:34, , 5F
01/04 20:34, 5F
→
01/04 20:35, , 6F
01/04 20:35, 6F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):