»
遊客:
加入
|
登入
(帳號有問題請連絡TWed2k@gmail.com)
TWed2k
»
程式開發討論區
» [問題]問問timer與執行序的觀念C#
可打印版本
|
推薦給朋友
|
訂閱主題
|
收藏主題
|
純文字版
論壇跳轉 ...
主題:
[C&C++]
[問題]問問timer與執行序的觀念C#
字型大小:
小
|
中
|
大
|
巨
←
→
lin66816
銀驢友〔初級〕
. 積分:
453
. 文章:
219
. 收花: 3596 支
. 送花: 321 支
. 比例: 0.09
. 在線: 3657 小時
. 瀏覽: 14090 頁
. 註冊:
6980
天
. 失蹤:
1206
天
#1 : 2011-8-4 06:06 PM
全部回覆
送花
(0)
送出中...
最近剛好也在寫C#
剛好也有用到Invoke,根據我的經驗...
你可以把Invoke視為由背景OS去幫你執行某一個事件
而這個事件必須是有 委派 的function
委派的function可以看做是C++的function pointer
例如:
一般來說在thread裡面沒辦法去修改form的控制項的所有參數
但你可以透過委派跟Invoke來修改
舉一個簡單的例子...
我在某一個thread裡面想去修改ListBox的內容
就必須先把InvokeListBoxAdd委派給MethodListBoxAdd
public delegate void MethodListBoxAdd(ListBox Name, bool Flag, string Message);
public void InvokeListBoxAdd(ListBox Name, bool Flag, string Message)
{
if (Name.InvokeRequired)
{
MethodListBoxAdd t = new MethodListBoxAdd(InvokeListBoxAdd);
Name.Invoke(t, Name, Flag, Message);
}
else
{
if (Flag)
{
Name.Items.Add(Message);
Name.SetSelected(Name.Items.Count - 1, true);
}
else
Name.Items.Clear();
}
}
上述範例如果我是在Form的主執行序呼叫InvokeListBoxAdd,不會進去if (Name.InvokeRequired)裡面,如果是在執行序呼叫InvokeListBoxAdd的話就會進去,然後委派MethodListBoxAdd執行Invoke就可以達成我在執行序修改ListBox內容的動作。
以上如有錯誤可以提出大家討論,thanks。
[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接
快速回覆
送出中...
快速回覆
表情符號
更多 Smilies
字型大小 :
小
|
中
|
大
|
巨
[完成後可按 Ctrl+Enter 發佈]
溫馨提示:本區開放遊客瀏覽。
選項:
關閉 URL 識別
關閉
表情符號
關閉
Discuz! 代碼
使用個人簽名
接收新回覆信件通知
發表時自動複製內容
[立即複製]
(IE only)
論壇跳轉 ...
所在時區為 GMT+8, 現在時間是 2024-11-22 12:03 AM
清除 Cookies
-
連絡我們
-
TWed2k
© 2001-2046
-
純文字版
-
說明
Discuz!
0.1
| Processed in 0.020885 second(s), 7 queries , Qzip disabled