Delphi 在多線程下面調用遠程服務端的方法(TSocketConnection )

在線程中直接調用Appserver會報Invalid argument錯誤。

1.可以通過同步的方法。

    把線程中調用Appserver的方法放入Synchronize中執行;但是這樣就達不到線程的作用了,如果在操作大數據或者網絡不好的時候可能卡死界面。

  Synchronize(DownVarFile);

    在DownVarFile中調用TSocketConnection .Appserver.GetFile(aDownFile, aFileKey, aFileDate, aRet);

2.設置TSocketConnection 的SupportCallbacks屬性

    把SupportCallbacks設置爲FALSE就可以在線程中直接調用Appserver的方法了。

TSocketConnection .Appserver.GetFile(aDownFile, aFileKey, aFileDate, aRet);

TSocketConnection的SupportCallBacks=TRUE, 就會創建兩個東西,一個是一個不可見的Window Handle,一個是用於Socket傳輸的線程。而此傳輸線程竟然以這個Window Handle爲中心建立了一個消息循環機制,以此來監控服務器的回調等等。

3.如果要在線程中對數據庫進行訪問或者VCL操作,最好單獨創建自己的ADOConnection連接


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章