亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

線程停止的奇怪問題

線程停止的奇怪問題

慕妹3242003 2018-12-06 19:15:48
???????1. ---------------------------   ?/// <summary>??????? /// 用來判斷是否停止線程的變量??????? /// </summary>??????? private? volatile bool m_stopThread=false;??????? private Thread m_threadStartSendMusic; ??????? /// <summary>??????? /// 開始發送??????? /// </summary>??????? public void SendMusicInThread(int startcount,int sendcount,string sbip)??????? {??????????? //若有在發送數據 停止發送??????????? m_stopThread = true;??????????? Thread.Sleep(106);????????? ?????????? ??????????? m_StartCount = startcount;??????????? m_SendCount = sendcount;??????????? m_sbip = sbip;????????????//新開一個線程發送數據 ??????????? m_threadStartSendMusic = new Thread(SendMusic);??????????? m_threadStartSendMusic.IsBackground = true;??????????? m_threadStartSendMusic.Start();??????? } ??????? /// <summary>??????? /// 發送音樂??????? /// </summary>??????? private? void SendMusic()??????? {??????????? m_stopThread = false;????????? ??????????? int endCount = m_StartCount + m_SendCount;??????????? for (int i = m_StartCount; i < endCount; i++)??????????? {??????????????? if (m_stopThread)??????????????? {??????????????????? break;??????????????? } ???????????? //do something ?????????????} ????? } ---------------------------------------------------------------------------------------------- 2. ??????? /// <summary>??????? /// 用來判斷是否停止線程的變量??????? /// </summary>??????? private? volatile bool m_stopThread=false;??????? private Thread m_threadStartSendMusic; ??????? /// <summary>??????? /// 開始發送??????? /// </summary>??????? public void SendMusicInThread(int startcount,int sendcount,string sbip)??????? {??????????? //若有在發送數據 停止發送??????????? m_stopThread = true;??????????? Thread.Sleep(106);??????????? m_stopThread = false;?????????????????????? m_StartCount = startcount;??????????? m_SendCount = sendcount;??????????? m_sbip = sbip;????????????//新開一個線程發送數據 ??????????? m_threadStartSendMusic = new Thread(SendMusic);??????????? m_threadStartSendMusic.IsBackground = true;??????????? m_threadStartSendMusic.Start();??????? } ??????? /// <summary>??????? /// 發送音樂??????? /// </summary>??????? private? void SendMusic()??????? {??????????? int endCount = m_StartCount + m_SendCount;??????????? for (int i = m_StartCount; i < endCount; i++)??????????? {??????????????? if (m_stopThread)??????????????? {??????????????????? break;??????????????? } ???????????? //do something ?????????????} ????? } ------------------------------------------------------------------------------------------------- ? 當我多次執行SendMusicInThread(。。。)方法時 為何1不能停止當前線程 然后再開線程m_threadStartSendMusic   2卻能把上一個線程停掉 然后再開一個線程  就?m_stopThread 放的位置不同 而m_stopThread 我設置的是volatile 應該每次執行去判斷m_stopThread的時候都是最新的值才對 為什么呢 ? ?
查看完整描述

2 回答

?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

你是如何調用 SendMusicInThread 這個函數的?

Thread.Sleep() 時間長點,比如 5000。

查看完整回答
反對 回復 2019-01-21
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

start方法后,線程不會馬上被執行,而是等待被執行。我猜想哦,這兩段代碼在不同配置電腦上,會有不同結果。

查看完整回答
反對 回復 2019-01-21
  • 2 回答
  • 0 關注
  • 406 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號