Re: [問題] 關於Windows form的Thread
※ 引述《tyc5116 (累人啊....)》之銘言:
: 如題,請問一下,我現在有一個功能要實現,但是弄不出來
: 透過Thread再來產生Thread
: ex Thread1執行fun()函數
: fun(){
: if (XXX)
: 再產生一個Thread,執行fun1();
: }
: 這裡有extern的問題
: 因為全域或靜態變數不能有 Managed 型別
: 所以array<Thread ^>^ ThreadMove=gcnew array<Thread^>(10);
: 我宣告在Form1中,為區域變數
: 而在a.cpp中
: gcroot<array<Thread^>^ > ThreadMove;
: void fun(){
: array<System::Threading::Thread^>^ I_ThreadMove=ThreadMove;
: }
: compiler會過,但實際執行便會出錯,錯誤訊息如下
: 'System.NullReferenceException' 類型的例外狀況發生於 Interface4.exe,但使用者
: 程式碼未加以處理
: 其他資訊: 並未將物件參考設定為物件的執行個體
: 請問我要怎麼修改呢?
: 謝謝
: → james732:你的 a.cpp 裡的 ThreadMove 根本沒有實體呀 12/29 15:54
: → tyc5116:目前問題就在於他怎麼去連結到主程式的ThreadMove@@ 12/29 16:05
: → james732:不懂你的func, func1, ThreadMove之間的關係 12/29 16:17
: → tyc5116:ThreadMove為型態Thread的陣列,裡面的Thread分別觸發fun1 12/29 16:20
: → tyc5116:可以把Thread1當作是個分配的工具,當某個條件成立,便拿 12/29 16:21
: → tyc5116:ThreadMove內的其中一個Thread去執行函數 12/29 16:21
大概類似這樣吧
void a();
void b();
void c();
void fun(){
if (條件A)
a();//會執行5秒
if (條件B)
b();//會執行5秒
if (條件C)
c();//會執行5秒
}
int main(){
fun();
return 0;
}
當三個都成立時,我希望執行時間應該是約5秒,而不是約15秒,所以要用thread
Thread1來執行fun(),當一個條件成立,便以一個Thread來執行函數
功能大概是要這樣吧,只是有一個限制
不是當成立時才產生一個thread,而要在程式執行時便將thread新增
恩....大概就是這樣吧,希望有表達的清楚
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.18.48.28
推
12/29 18:33, , 1F
12/29 18:33, 1F
→
12/29 18:33, , 2F
12/29 18:33, 2F
→
12/29 18:34, , 3F
12/29 18:34, 3F
→
12/29 18:34, , 4F
12/29 18:34, 4F
→
12/29 18:35, , 5F
12/29 18:35, 5F
→
12/29 18:56, , 6F
12/29 18:56, 6F
→
12/30 01:20, , 7F
12/30 01:20, 7F
→
12/30 01:27, , 8F
12/30 01:27, 8F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):