TIdAntiFreeze 实施

TIdAntiFreeze Implementation

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

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 操作阻塞主线程时泵送主消息循环。