2012-04-03 23 views
1

我目前正在使用VS2008的移動應用程序,它具有定期檢查期望的藍牙設備是否在範圍內的能力。目前,我正在使用System.windows.form.Timer來執行此操作。但是,我發現它會減慢應用程序的速度,更糟的是,它有時會崩潰。定期檢查藍牙設備是否在範圍內 - .NET Compact Framework

有沒有人有任何更好的想法如何定期檢查而不使用System.windows.form.timer?我目前使用32英尺藍牙。

感謝您的任何幫助提前。

問候,

查爾斯

+0

你」重新使用System.Windows。 C中的表單而不是C++或C#? – 2012-04-03 00:39:50

+0

我在Winform中使用C# – 2012-04-03 00:48:14

回答

0

添加一個後臺線程的時間量X(你如何選擇長)的,而睡,然後每隔一段時間(根據多久線程睡眠),它會運行(喚醒並執行),檢查藍牙是否在範圍內,並給你某種形式的反饋,然後再次進入休眠狀態。

總結了

  1. 線程激活
  2. 檢查如果藍牙範圍內
  3. 給你反饋
  4. 線程進入睡眠狀態,再次

    while (true) 
    { 
        //starts a new thread 
        Thread blueToothThread = new Thread(new ThreadStart(menu.Run)); 
    } 
    
    //the threads method named Run 
    public void Run() 
    { 
        // Perform the bluetooth check here 
    
        Console.WriteLine("You will see this only once every 8 seconds"); 
        //choose how long thread sleeps here 
        Thread.Sleep(8000); 
    } 
    
+0

但是,如何使用WHILE循環來執行此操作?因爲檢查不受時間限制。它可以運行儘可能長。這種方法是否會減慢應用程序尤其是UI? – 2012-04-03 00:45:55

+0

它會運行儘可能長,什麼限制時間是線程睡了多長時間,因爲你繼續看看[線程](http://msdn.microsoft.com/en-us/library/7a2f3ay4( v = vs80).aspx)並且如果線程處於帶有Thread.Sleep(8000)的'while(true)'無限循環;'這意味着線程每8秒只執行一次。 – 2012-04-03 00:49:01

+0

好的。我明白你的意思。你在說我應該使用一個標誌將它設置爲真或假。如果爲true,則運行檢查,否則停止檢查。但是,我是否需要使用Thread來避免凍結 – 2012-04-03 00:51:53

相關問題