3
我的服務器必須打印一些關於其工作的報告。如何在OneEecute事件中使用可視對象,如標籤,編輯框?如何在Indy中使用視覺控件? (Delphi)
我的服務器必須打印一些關於其工作的報告。如何在OneEecute事件中使用可視對象,如標籤,編輯框?如何在Indy中使用視覺控件? (Delphi)
對於不在主線程以外的任何線程中修改VCL對象的相同規則在這裏也是有效的。您不應該更改OnExecute事件處理程序中的任何VCL控件,因爲該代碼將在Indy爲每個連接產生的工作線程的上下文中運行。
如果您需要更改圖形用戶界面,請使用Synchronize或Queue方法,或者使用自定義通知機制通知主線程爲您進行GUI修改。
如果你想打電話同步或隊列方法,你必須鍵入鑄TIdYarn到TIdYarnOfThread從TIdYarn派生,並與線程實現它:
// Calling MyMethod using Synchornize inside TIdTcpServer.OnExecute event-handler
TIdYarnOfThread(AContext.Yarn).Thread.Synchronize(MyMethod);
// Calling MyMethod using Queue inside TIdTcpServer.OnExecute event-handler
TIdYarnOfThread(AContext.Yarn).Thread.Queue(MyMethod);
的TThread具有靜態同步()和Queue()方法在D7 +中,所以你不需要直接訪問Yarn的內部。或者,也可以使用Indy的TIdSync和TIdNotify類,它們爲您處理這些細節。 – 2010-11-30 22:04:18