delphi多線程資料庫
『壹』 DELPHI的程序多線程的數據怎麼同步
這個這個夠亂的。思路肯定有問題,線程中用回調函數控制,在主線程中處理臨界區的問題肯定OK
『貳』 delphi寫的動態鏈接庫,如何使用多線程
procere talkthread.synchAddDataToControl;
是可以當參數傳的,
procere talkthread.synchAddDataToControl(ClientSocket:TClientSocket);
『叄』 DELPHI怎麼實現多線程 .....
多線程其實非常簡單,DELPHI有多線程的類,你添加即可使用,但是我喜歡自己調用API,方法如下:
定義一個函數或者過程,這個函數就是線程要執行的內容,然後調用API就可以不斷創建線程,每個線程都單獨的執行那個函數,執行完畢線程就自動關閉,下面是我程序裡面的部分代碼:
{下面這個就是線程過程,我的線程傳遞一個參數,建立的SOCKET}
procere
ClientThread(var
sock:TSOCKET);
stdcall;
var
……;
begin
……
end;
{下面是主程序建立服務,等待連接,連接後調用線程進行處理的代碼}
repeat
iAddrSize
:=
sizeof(client);
sClient
:=
accept(sListen,
@client,
@iAddrSize);
if
sClient=INVALID_SOCKET
then
begin
SocketErrorMsg(sClient,
'accept()
fail');
break;
end;
writeln('Accepted
client:
',inet_ntoa(client.sin_addr),':',ntohs(client.sin_port),'
sock=',sClient);
hThread
:=
CreateThread(nil,
$1000,
@ClientThread,
@sClient,
0,
dwThreadId);
if
hThread=0
then
begin
writeln('CreateThread()
fail:',GetLastError);
break;
end;
CloseHandle(hThread);
until
false;
『肆』 delphi怎樣使用多線程寫入ACCESS資料庫
你用兩個ADO連接組件,一個連接sql,一個連接ACCESS;然後用兩個ADOdataset組件,一個與SQLADO連接組件連接,另外一個與ACCESS的鏈接組件連接,各自打開要讀寫的表,然後用一個FOR循環,讀寫,這和從界面上錄入數據然後保存,沒有什麼兩樣.
『伍』 delphi 如何用ADO進行多線程查詢資料庫
我剛做了一個在線程中使用ado的系統,實現方式如下:使用dm來存放
connection
,在各個線程中create
adoquery控制項,connection屬性設為dm中的connection,在使用完之後別忘了free。另外別忘了同步。好運!
『陸』 Delphi中如何多線程操作資料庫中的數據表
1。通過線程的互斥來同步操作資料庫 2。資料庫採用事務處理表中的數據 3。採用共享方式打開資料庫,不是以獨占方式打開資料庫 建立一個mysql連接表加上一個臨界區,表結點是這樣的(mysqlcon,bool),根據實際情況定大校我用的是10個連接。
『柒』 delphi 多線程問題。 我用多線程操作VCL控制項,(不可視的,idhhtp.adoquery)
沒見過idhhtp.adoquery
只知道 idhttp以及 adoquery
一個是網路控制項 一個是資料庫訪問控制項
如果每個線程使用的 idhttp以及 adoquery都各不相同(或者idhttp以及 adoquery都是線程內部的對象) 那自然不影響使用。
如果 idhttp以及 adoquery是在線程外定義的,那就不可取。
如果想傳參數到線程
比如說 線程類是 TthreadA
TthreadA里 定義參數
public
dd:integer;
那你在主線程里
var
ta:TthreadA;
ta:=TthreadA,create(true);
ta.dd:=1234;
『捌』 delphi多線程採集數據
線程裡面加application.processmessage
『玖』 delphi 多線程讀寫資料庫
操作資料庫之前對表進行lock,操作完後進行解鎖。
也可以申請一個互斥變數,每次要操作數據之前申請,結束後釋放
前者用的是資料庫自己提供的功能,後者是自己控制操作別同時發生。建議用前者。