Q qaz1znz Unregistered / Unconfirmed GUEST, unregistred user! 2006-03-22 #1 我有一个函数,现在想开一个线程,在线程中运行这个函数,函数运行完成后 自动关闭线程,因为函数有很多参数,新开线程中如何传递过去,另有几个全局变 量,又如何处理?
来 来如风 Unregistered / Unconfirmed GUEST, unregistred user! 2006-03-22 #2 直接放进去就可以了啊 如果你需要用到同步操作的话那么单独写一个SetParams的过程来接受参数啊, 这几个参数你可以把他定义为这个线程的私有成员啊 执行放在execute里就可以了
D dongy_143 Unregistered / Unconfirmed GUEST, unregistred user! 2006-03-22 #3 直接把函数放入线程中不能执行么?在线程中调用和平常调用有什么不同?
X xfast Unregistered / Unconfirmed GUEST, unregistred user! 2006-03-22 #4 线程用完要释放,还要防止死锁; 全局变量在线程中使用要谨慎,如果线程同时修改全局变量会触发异常。
Q qaz1znz Unregistered / Unconfirmed GUEST, unregistred user! 2006-03-22 #6 我没做过多线程的东西,看了几个多线程的例子,没看明白, 那位能就我的要求,写几句提示一下吗?多谢多谢
季 季春天 Unregistered / Unconfirmed GUEST, unregistred user! 2006-03-22 #7 继承Delphi本身的线程应该没有这种问题吧? 给其传参数,用API创建好像不能传的? 顺便问一下,API创建的能调用全局变量么?
C chen_liang Unregistered / Unconfirmed GUEST, unregistred user! 2006-03-22 #8 重载线程的构造函数 constructor MyThread.Create(Edit:TEdit;Max:Integer); begin inherited Create(False); AEdit:=Edit; MaxLoop:=Max; FreeOnTerminate := True; end; procedure MyThread.Execute; begin yourprocedure(AEdit,MaxLoop); end;
重载线程的构造函数 constructor MyThread.Create(Edit:TEdit;Max:Integer); begin inherited Create(False); AEdit:=Edit; MaxLoop:=Max; FreeOnTerminate := True; end; procedure MyThread.Execute; begin yourprocedure(AEdit,MaxLoop); end;