又是 Indy, 請教 TIdThreadMgrDefault 的功用 |
答題得分者是:artist1002
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
|
artist1002
高階會員 發表:2 回覆:155 積分:151 註冊:2002-09-26 發送簡訊給我 |
我稍微有使用到一些...提供你作參考
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 發送簡訊給我 |
|
rsina
一般會員 發表:0 回覆:1 積分:0 註冊:2007-03-28 發送簡訊給我 |
实际上,我发现就算没有以上两控件,也可以实现对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有更好的控制功能? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |