我有一個方法,偵聽通過流發送的數據。因爲networkstream.read方法是同步的,我必須在單獨的線程上執行它。所以,我在一個單獨的線程中執行的方法是:停止線程不工作
void someMethod(param1, param2....)
{
try{
while(stream.read(data...) != 0) // code waits here until data is received
{
// do stufff
}
}catch{}//
}
我可以退出該線程的唯一途徑是通過關閉流和catch塊將被執行。我有時需要開始監聽同一個數據流上的數據,但採用不同的方法。所以如果我創建線程爲線程t = new線程(new threadstart(somemethod ......)然後做t.start(someObject);稍後當我做t.abort()時;該方法仍然會監聽。數據我怎樣才能終止它
也是我試圖創建一個全局變量,如:
bool someBoolean = false;
void someMethod(param1, param2....)
{
try{
while(someBoolean ==false && stream.read(data...) != 0) // code waits here until data is received
{
// do stufff
}
}catch{}//
}
然後我計算過,我改變someBoolean爲true的方法將停止執行出於某種原因它。不是,爲什麼?似乎someBoolean是兩個變量,因爲從主線程中改變它的值似乎不會影響它的第二個線程...
您應該以緩衝的方式從流中讀取數據,意味着讀取少量數據。顯示真實的代碼,你如何做你的閱讀和你的東西,你的線程工作的方式... –
'stream.Read'將阻塞,直到數據可用,所以設置布爾值在這一點上沒有幫助。 – dlev