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