Blue
Red
Green
Orange
Voilet
Slate
Dark

大富翁的水平也不过如此-----大家停止吹水吧,请看这道题,这是能力的体验。高高手请进!!!!!!!!!!!!! (61分)

Y

yysun

Unregistered / Unconfirmed
GUEST, unregistred user!
不过要记住,目前的 Delphi VCL 是单线程的(not thread-safe)。
 
A

Activer

Unregistered / Unconfirmed
GUEST, unregistred user!
好久没有拿分数了,今天居然遇到一个这么简单的问题,nnd赚大了!
下次希望你不要用这种标题。

我喜欢用Assigned来判断,
if not Assigned(MyThreadThrd) then
MyThreadThrd := TMyThread.Create(false);
else
begin
// to do something u like;
end;
线程执行部分:TMyThread.Execute
begin
FreeOnTerminate := true;
OnTerminate := ThreadDone;
// do your job
end;

在ThreadDone中
procedure ThreadDone;
begin
MyThreadThrd := nil;
end;

知道什么是OnTerminate事件吗?
如果不知道请看Help,我想多说了。
 
C

Campo

Unregistered / Unconfirmed
GUEST, unregistred user!
to Activer:
你的办法很好,我试试。
 
A

Activer

Unregistered / Unconfirmed
GUEST, unregistred user!
我很久以前就用过了,一定行的,给分吧!
 
C

Campo

Unregistered / Unconfirmed
GUEST, unregistred user!
很快就试出来了,等等
 
C

Campo

Unregistered / Unconfirmed
GUEST, unregistred user!
to Activer:
有一个问题:
if not Assigned(MyThreadThrd) then
begin
MyThreadThrd := TMyThread.Create(True);
MyThreadThrd.OnTerminate := ThreadDone
//在这里赋值行吗?
MyThreadThrd.resume;
end else begin
// to do something u like;
end;

 
A

Activer

Unregistered / Unconfirmed
GUEST, unregistred user!
>>请看这道题,这是能力的体验。高高手请进!!!!!!!!!!!!!
吃不消!

>>MyThreadThrd.OnTerminate := ThreadDone
//在这里赋值行吗?
这个就要看你的水平了,如果水平一般呢就可以,如果很差就不行了。
自己想想,看看OnTerminate是什么。如果不知道怎样给OnTerminate赋值,
请另开一题,会有人给你圆满答复的。
 
C

Campo

Unregistered / Unconfirmed
GUEST, unregistred user!
to Activer:
从问题的角度来看,你的回答是最有价值的,但为人太过于激动了,

要知道这道题最初的题目是什么吗,
现在告诉你是这样的: 送分题目:如何判断类实例是否释放?不信可以
问问在前面回答的各位大侠。但都没有得到满意的答复。
后来我变换思路,如果用这个思路来解决问题,那么到现在为止,还没有满意答案。
所以我才把题目改变。

你说的解决方法是很好的方法,也是object:=nil这个思路。
但是呢,能解决问题的方法就是好方法。
或许我的那个思路根本就是无法实现的,那当然是超难题了。
所以呢,最好不要那么冲动。最好了解来龙去脉再说话。

综合起来,yysun和Activer的方法能解决问题。
 
A

Activer

Unregistered / Unconfirmed
GUEST, unregistred user!
>>所以呢,最好不要那么冲动。最好了解来龙去脉再说话。
那你说我冲动,我为什么冲动呢?你知道吗?
最近看到这么都的什么“超难题”,“非高高手莫入”。。。。
进去一看,都什么问题! 打字都不想打的问题。
想必你也看到了,能不激动吗?
你知道以前的大富翁(2000年以前)是怎样的吗?
再看看现在的一股浮夸风,只要有点入门的人都觉得自己很牛,
已经高处不胜寒了,提个问题别人都不能回答,
自己也不动动脑袋,去看看以前的讨论!
 
M

MrMengyi

Unregistered / Unconfirmed
GUEST, unregistred user!
什么样的答案呀
》也是object:=nil这个思路。
这个我同意,但我们的答案与Activer和yysun的答案有本质区别吗?
不过个人觉得yysun将的还是比较清楚的
线程执行部分:TMyThread.Execute
begin
// do your job
MyThread := nil;
end;
气愤!!!
 
B

bashan

Unregistered / Unconfirmed
GUEST, unregistred user!
我也遇到这类问题,我用一个历史数据组保存打开过的窗口,也就是说有两个窗口变量指向同一个窗口,我用一个变量的方法释放了窗口,这时我如何在使用另一个变量时判断窗口是否已释放呢,用nil是不行的,对assigned我还没试呢。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部 底部