Re: [問題] 這種狀況,表示得用多執行緒嗎

看板C_Sharp作者 (市政府7F)時間17年前 (2008/05/30 17:08), 編輯推噓2(200)
留言2則, 1人參與, 最新討論串3/3 (看更多)
小弟不才,又有一些問題想請問 TcpListener.BeginAcceptSocket()必須要遇到EndAcceptSocket() 才會結束並且取得聆聽的結果 非同步的好處就是讓小綠人不回頭一直往前衝 結果在下為了讓程式一直保持聆聽狀態,寫了如下的指令 bool keepListen = true; while (keepListen) { TcpListener.BeginAcceptSocket(...) .... } 想說在停止鈕把keepListen設成false就好 果不其然,程式沒有回應 我想可能是BeginAcceptSocket在Message queue裡面爆滿狂排隊 每個人都在EndAccessSocket吧 這下真的是考倒我了 要保持聆聽狀態又要以另外一個按鈕來停止聆聽狀態 到底該怎麼做呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.216.193

05/31 01:05, , 1F
你的模型可以用ManualResetEvent來協調,BeginXX後WaitOne()
05/31 01:05, 1F

05/31 01:06, , 2F
然後在BeginXX()中的delegate函式去set event,就能聽其他
05/31 01:06, 2F
文章代碼(AID): #18FyGTN3 (C_Sharp)
文章代碼(AID): #18FyGTN3 (C_Sharp)