Re: [問題] 有關thread的問題

看板C_Sharp作者 (hamster)時間16年前 (2008/05/22 20:07), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
可能是我講得太簡化了,不過從別的執行緒使用 Control.Invoke 去呼叫 button2_Click 有點奇怪,因為都一樣是從 UI 執行緒呼叫,這樣跟直接由 button1_Click 呼叫 button2_Click 好像差異不是很大,只差在無法預測 button2_Click 到底什麼時候會在 UI 執行緒被呼叫。 之前提到的做法大概如下: private void button1_Click(object sender, EventArgs e) { object[] array = new object[]{ sender, e }; ThreadPool.QueueUserWorkItem(new WaitCallback(ABC), array); } void ABC(object param) { object[] array = param as object[]; button2_Click( array[0] , array[1] as EventArgs); } 不過前提是 button2_Click 方法中沒有直接操作 UI 控制項。 ※ 引述《xanlich (...)》之銘言: : 在寫C# windows程式時, 假如說有兩個按扭事件 : 可以用下面的寫法, 使得按button1時, 也觸發button2_Click的事件, 如下: : private void button1_Click(object sender, EventArgs e) : { : button2_Click(sender, e); : } : private void button2_Click(object sender, EventArgs e) : { : . : . : . : } : 但如果是用Threadpool執行的程式片段, 想呼叫button2_Click , 如下: : ThreadPool.QueueUserWorkItem(new WaitCallback(ABC)); : 執行以下Thread: : public void ABC(object p) : { : button2_Click(sender, e); <--這樣不行, 沒有sender跟e : } : 要怎樣才能在Thread裡去執行button2_Click? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.71.99

05/22 23:40, , 1F
我button2裡有操作UI,你講的可以run,但碰到操作UI會無效
05/22 23:40, 1F
文章代碼(AID): #18DM8KJ_ (C_Sharp)
文章代碼(AID): #18DM8KJ_ (C_Sharp)