TIdAntiFreeze Implementation

TIdAntiFreeze Implementation

本文关键字:Implementation TIdAntiFreeze      更新时间:2023-10-16

在Delphi XE8的FormCreate下,我使用以下语法来应用防冻功能:

if Assigned(AntiFreeze) then FreeAndNil(AntiFreeze);
// or sometimes: AntiFreeze := TIdAntiFreeze.Create(NIL);

我尝试在c++ Builder XE8中实现它,像这样:

   if (AntiFreeze->Assign()) {
     AntiFreeze->Active;
     AntiFreeze->Free();
   } 

但是它不起作用。我需要你帮我告诉我正确的方法。

非常感谢你…

Delphi代码正在释放在设计时放置在窗体上的TIdAntiFreeze组件。如果你不想要这个组件,一开始就不要把它放在Form上。

也就是说,与Delphi代码等价的c++代码应该是:

if (AntiFreeze) FreeAndNil(AntiFreeze);
// or sometimes: AntiFreeze = new TIdAntiFreeze(NULL);

话虽这么说,你真的应该努力不使用TIdAntiFreeze。你不应该在主UI线程的上下文中做任何,这会阻塞主消息循环最多几秒钟。大多数Indy操作更适合在工作线程中使用,而不是在主UI线程中使用。TIdAntiFreeze仅在主UI线程中工作,当Indy操作阻塞主线程时,通过泵送主消息循环