作者sosokill (隨便殺)
看板C_Sharp
標題[問題] 這樣是Timer的問題還是Label的問題?
時間Sun Jan 3 23:31:53 2010
我在CallbackFun裡面啟動Timer1 (Timer1每秒執行一次)
(在啟動前和啟動後使用Messagebox來查看Timer1的Enable狀態)
然後在Timer1裡面去變更label的Text
但是很奇怪的,如果啟動後所跳出的Messagebox沒有關掉,
Label就可以正常的更新Text,但是一但把Messagebox關掉,
就無法更新Text了,就算我在Timer1裡面設定中斷點也沒用
就好像是Timer1隨著Messagbox關閉也跟著停止了
但又好像是Label沒有更新,之後只要有隨便一個Messagebox跳出
Label就會更新顯示了...
這樣到底是什麼問題呢?又該如何解決= =?
程式大概是這樣的:
public partial class Form1 : Form
{
List<Label> playtimerlist = new List<Label>(); //存放label的List
delegate void SetUiTextCallback(object o,string text);
.
.
.
public bool Timer1Enabled
{
get { return timer1.Enabled; }
set { timer1.Enabled = value; }
}
public void setuitext(object o, string text)
{
Control c = (Control)o;
if (c.InvokeRequired)
{
SetUiTextCallback d = new SetUiTextCallback(setuitext);
c.Invoke(d, new object[] { o, text });
}
else
{
c.Text = text;
}
}
public void receiveCallBack(IAsyncResult ar) //給beginreceive使用
{
.
.
.
Messagebox.show(Timer1.Enabled.ToString());
Timer1Enabled = true;
Messagebox.show(Timer1.Enabled.ToString()); //這個Box關閉後
Timer1就停止?
}
.
.
.
int timers = 10;
private void timer1_Tick(object sender, EventArgs e)
{
timers--;
setuitext(playtimerlist[clientkey - 1], timers.ToString());
if (timers < 1)
{
setuitext(playtimerlist[clientkey - 1], "");
timers = 10;
timer1.Stop();
}
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.47.114
※ 編輯: sosokill 來自: 220.136.47.114 (01/03 23:41)
※ 編輯: sosokill 來自: 220.136.47.114 (01/03 23:43)
※ 編輯: sosokill 來自: 220.136.47.114 (01/03 23:52)
1F:推 cplusplus:如果你都不放messagebox呢? 不會執行? 我猜是因為你的 01/04 01:57
2F:→ cplusplus:callback結束了 執行callback的thread也結束了 01/04 01:57
3F:→ cplusplus:然後也沒有其他thread可以借用 所以就停了~ 你試試看 01/04 01:58
4F:→ cplusplus:不要用messagebox,改成啟動timer後Thread.Sleep(20000) 01/04 01:58
5F:→ cplusplus:你可以試試看用 Windows Timer,只要視窗在它就可以跑 01/04 01:59
6F:→ sosokill:沒有喔~我Callback一直在 沒有結束 不放messagebox的話 01/04 03:34
7F:→ sosokill:也不會執行,我後來改成用System.Times.Timer就可以了 01/04 03:35
8F:→ sosokill:原本直接拉出來的是System.Windowns.Timer 01/04 03:35
9F:→ sosokill:看來是他自己內建UI的問題= = 01/04 03:35
10F:推 cplusplus:那還蠻詭異的,有空來試試看 01/04 19:19