delphi中用线程类怎么知道是哪个线程结束了调用onterminate的事件函数?
1.delphi中用线程类怎么知道是哪个线程结束了调用onterminate的事件函数?我有几个线程,不是同时开启,是按照一定顺序开启的。。每个线程结束后都会调用onte...
1.delphi中用线程类怎么知道是哪个线程结束了调用onterminate的事件函数?我有几个线程,不是同时开启,是按照一定顺序开启的。。每个线程结束后都会调用onterminate指向的同一个事件函数。那么,问题来了。我如何在onterminate的事件函数里知道是哪个线程调用的这个函数?或者说,我怎么才能知道哪个线程结束了?一个线程结束了才会调用onterminate事件,所以不能判断函数里的全局变量。2.我在每个线程的CREATE方法里都传入了一个TLABLE参数。在线程里声明一个TLABLE的变量等于传进去的这个TLABLE。在线程里可以直接修改线程里面的那个TLABLE显示的文本。传进去的那个TLABLE也会跟着变。所以用这个做了个线程里的实时状态显示。但是我用这个方法同样传入一个BOOLEAN或整数类型的变量,在线程里声明同样类型的变量等于它们。也想用这种方法来判断一个线程里的结束。但改动线程里的变量的时候,传入的这个变量却不会跟着变。请问这是什么原因??怎么解决这种传值的目的? 以上是两个问题。但其实都是想实现同一个目的。就是为了在线程外判断哪个线程结束了。所以,希望前辈们不吝赐教,分数有。说的详细的可追加
是不能判断线程里的全局变量 ,不是函数。写错了 展开
是不能判断线程里的全局变量 ,不是函数。写错了 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏100(财富值+成长值)
1个回答
展开全部
最基础的东西你自己都还没明白。。。建议多看看基础的书或文献。
OnTerminate可以访问线程类的变量,除非你在之前已经释放了。
TLabel是一个类,你传参进去只是这个类实例的指针,你改变他的属性,他当然会跟着变,你在线程类声明的Boolean变量是他自己的成员变量,你只不过把传入的变量的值给了线程类成员变量,这完全是两个东西,如何能跟着变?!
类里面不能叫全局变量,可以叫成员变量,可以是私有可以使公用。
如何知道是哪个线程结束方法很多,简单常用的就是设置一个标识,给每个线程编个号就可以了,
设置一个公用变量 ID:Integer;而且你是顺序启动,第一个就ID:=1;第二个就ID:=2;.......
OnTerminate可以访问线程类的变量,除非你在之前已经释放了。
TLabel是一个类,你传参进去只是这个类实例的指针,你改变他的属性,他当然会跟着变,你在线程类声明的Boolean变量是他自己的成员变量,你只不过把传入的变量的值给了线程类成员变量,这完全是两个东西,如何能跟着变?!
类里面不能叫全局变量,可以叫成员变量,可以是私有可以使公用。
如何知道是哪个线程结束方法很多,简单常用的就是设置一个标识,给每个线程编个号就可以了,
设置一个公用变量 ID:Integer;而且你是顺序启动,第一个就ID:=1;第二个就ID:=2;.......
追问
不好意思。其实我只是用来做外挂的。用到哪就查一下而已。怎么在结束事件里访问线程里的变量?结束事件只有一个TObject参数,怎么通过这个参数获取?
谢谢,看你的回答我查了一下指针的用法,成功将PBOOLEAR型做参数传进去了。谢谢
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询