[問題] 關於thread寫關於像遊戲大廳的方式

看板C_Sharp作者 (Gawain)時間16年前 (2009/11/03 17:05), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
大家好。 請問一下,現在程式狀況是: 我有一個socket server,及client程式。 client已經連入,之後會在遊戲大廳上"開房間" 所以會有兩個thread 一、開房間的人 二、進入房間的人 之後server會像兩個人發送訊息,告知服務…等 我在server是寫 while (true) { ListenClient lc = new ListenClient(tcpListener); //ListenClient是我定義的物件 ThreadStart serverThreadStart = new ThreadStart(lc.ServerThreadProc); //ServerThreadProc也是定義要執行的method Thread serverthread = new Thread(serverThreadStart); serverthread.Start(); } 目前遇到問題是: 我只能在ListenClient裡取得自己的"Thread.CurrentThread.ManagedThreadId" 但我確不知道要怎麼去控制那個id的執行緒 小弟也有想過ThreadPool的方式, 如: while (true) { ListenClient lc = new ListenClient(tcpListener); ThreadPool.QueueUserWorkItem(lc.ServerThreadProc, i); i++; } 可是也找不到可以控制其中一條執行緒的方法? 看了objectBrowser,和一些thread的資料 可是還是不知道要怎麼解? 希望大大可以幫忙解答一下, 謝謝喔! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.220.144

11/03 19:40, , 1F
何必那麼複雜呢?自訂一個class表示房間 然後用陣列儲存
11/03 19:40, 1F

11/03 19:41, , 2F
每個已經建立的房間 讓所有的client thread去存取
11/03 19:41, 2F

11/03 19:42, , 3F
只是存取時要記得使用lock將SyncRoot鎖定 處理同步化問題
11/03 19:42, 3F

11/03 22:40, , 4F
小弟試試,謝謝!
11/03 22:40, 4F
文章代碼(AID): #1Ax_9RH- (C_Sharp)