none
ThreadPool.QueueUserWorkItem RRS feed

  • 問題

  • 在執行方法中下中斷點 執行續會正常運作,但是如果不下會沒有反應

    按下按鈕時

    System.Threading.ThreadPool.QueueUserWorkItem(function);
    ThreadStatus = true;

    方法

     private void function(object obj)
    {
                while (ThreadStatus)
                {
                   //條件發生

                   ThreadStatus = false;

                   break;

                }

    }

    第一次按下按鈕時會正常執行 只是當條件發生而停止後

    當我再按按鈕時 程式卻毫無反應

    但是把中斷點下在function中時按下按鈕又會執行


    • 已編輯 StuBoo 2017年10月19日 上午 07:44
    2017年10月19日 上午 07:43

解答

  • Thread裡面,while迴圈中,建議加入適當的sleep,避免高CPU使用.

    另外流程上,會不會Thread工作排入後,ThreadStatus是false,來不及等到ThreadStatus被設定,工作就已經結束了?可以觀察看看


    請注意討論區相關規則,良好的討論環境需要大家的共同努力

    • 已標示為解答 StuBoo 2017年10月19日 上午 09:45
    2017年10月19日 上午 09:34

所有回覆

  • Thread裡面,while迴圈中,建議加入適當的sleep,避免高CPU使用.

    另外流程上,會不會Thread工作排入後,ThreadStatus是false,來不及等到ThreadStatus被設定,工作就已經結束了?可以觀察看看


    請注意討論區相關規則,良好的討論環境需要大家的共同努力

    • 已標示為解答 StuBoo 2017年10月19日 上午 09:45
    2017年10月19日 上午 09:34
  • 犯蠢了,順序的問題

    System.Threading.ThreadPool.QueueUserWorkItem(function);
    ThreadStatus = true;

    true在後段

    執行緒跑得比ThreadStatus = true;還快



    • 已編輯 StuBoo 2017年10月19日 上午 09:49
    2017年10月19日 上午 09:45