全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1997
推到 Plurk!
推到 Facebook!

又是 Indy, 請教 TIdThreadMgrDefault 的功用

答題得分者是:artist1002
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-10 14:07:23 IP:203.67.xxx.xxx 未訂閱
我做了一些測試, 發現在 TIdTCPServer 的 ThreadMgr 中有沒有指定這個元件好像沒什麼差別, 不知有沒有高手可以解除我的疑惑.    Jesse Chan
------
Jesse Chan
artist1002
高階會員


發表:2
回覆:155
積分:151
註冊:2002-09-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-10 20:46:21 IP:211.76.xxx.xxx 未訂閱
我稍微有使用到一些...提供你作參考 TThreadMgr主要是提供給TIdTCPServer一些額外的Thread控制機制 目前有兩個選擇,TIdThreadMgrDefault和TIdThreadMgrPool TIdThreadMgrDefault 是基本的Thread控制機制 它主要是讓你在程式的其他地方控制TidServer的Threads 有ActiveThreads的ThreadList可以參考, 也可以設定Thread的執行優先權, 或是通知所有的Thread關閉等等... TIdThreadMgrPool則是繼承了TIdThreadMgrDefault另外加上Threads Pool的機制, 主要是提供每個Request之後都會斷線的情況使用(像Web Server) 在離線後僅會清空資料,不會把Thread釋放,在下次連線的時候直接到Pool中取得空的Thread來提供連線... 如果沒有特殊的需要其實是不用指定這樣的元件的.
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-11 09:08:31 IP:203.67.xxx.xxx 未訂閱
感謝您的回答    Jesse Chan
------
Jesse Chan
rsina
一般會員


發表:0
回覆:1
積分:0
註冊:2007-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-03-28 12:22:26 IP:123.113.xxx.xxx 訂閱
实际上,我发现就算没有以上两控件,也可以实现对ThreadList的操作,以下是我一个项目的代码片断:

//温柔的和每个客户端说 byebye
<textarea class="delphi" rows="10" cols="60" name="code"> Procedure SayBye(TcpServer: TIdTCPServer); Var pt: TIdPeerThread; i: Integer; Begin If TcpServer.Active Then Begin For i := 0 To TcpServer.Threads.LockList.Count - 1 Do Begin pt := TcpServer.Threads.LockList.Items[i]; pt.Connection.Writeln('Sorry, Server will shutdown!'); pt.Connection.Disconnect; End; TcpServer.Active := False; End; End; </textarea>
可以看到,其实TIdTCPServer也内置有Threads处理方式,可能另外的两个ThreadMgr有更好的控制功能?
系統時間:2024-05-05 18:35:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!