delphi – TCriticalSection TryEnter方法始终返回True
发布时间:2020-12-15 04:14:13 所属栏目:大数据 来源:网络整理
导读:在TCriticalSection上调用TryEnter方法时,结果始终为true.当然,如果能够获得锁定,这应该只返回true? var MyCritSect: TCriticalSection;begin MyCritSect := TCriticalSection.Create; try // MyCritSect.Enter; Writeln(BoolToStr(MyCritSect.TryEnter,Tru
在TCriticalSection上调用TryEnter方法时,结果始终为true.当然,如果能够获得锁定,这应该只返回true?
var MyCritSect: TCriticalSection; begin MyCritSect := TCriticalSection.Create; try // MyCritSect.Enter; Writeln(BoolToStr(MyCritSect.TryEnter,True)); // This should return True Writeln(BoolToStr(MyCritSect.TryEnter,True)); // This should return False? Readln; except on E: Exception do Writeln(E.ClassName,': ',E.Message); end; end. 即使您取消注释MyCritSect.Enter;对于两次调用TryEnter,它仍然返回True. 我正在使用Delphi XE和Windows 10. 解决方法
关键部分是
re-entrant locks.从
documentation开始:
如果使用不同的线程,您对TryEnter的调用将失败,并且第一个线程已经拥有该锁. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |