2012-04-03 4 views
1

Ich arbeite derzeit an einer mobilen Anwendung mit VS2008, die die Fähigkeit hat, regelmäßig zu überprüfen, ob das gewünschte Bluetooth-Gerät in Reichweite ist oder nicht. Im Moment verwende ich System.windows.form.Timer, um dies zu tun. Allerdings habe ich festgestellt, dass es die Anwendung verlangsamen wird, noch schlimmer, es wird manchmal abstürzen.In regelmäßigen Abständen prüfen, ob das Bluetooth-Gerät in Reichweite ist oder nicht - .NET Compact Framework

Hat jemand eine bessere Idee, wie man regelmäßig überprüft, ohne den System.windows.form.timer zu verwenden? Ich verwende derzeit 32 Füße für das Bluetooth.

Vielen Dank für etwaige Hilfe im Voraus.

Grüße,

Charles

+0

schlafen‘ Re arbeitet mit System.Windows. Formulare in C und nicht C++ oder C#? –

+0

Ich arbeite mit C# in winform –

Antwort

0

einen Hintergrund-Thread hinzufügen, die für X Höhe der Zeit schläft (Sie entscheiden, wie lange), dann jeder einmal in eine Weile (je nachdem, wie lange der Thread schläft) es läuft (wachen Sie auf und führen Sie aus), überprüfen Sie, ob das Bluetooth in Reichweite ist und geben Sie irgendeine Art von feed zurück, dann wird es wieder schlafen gehen.

Fasste

  1. Thema
  2. Checks aktiviert, wenn Bluetooth in Reichweite ist
  3. Sie zurück Gibt füttern
  4. Thema geht wieder Sie

    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

Wie kann ich jedoch WHILE-Schleife verwenden, um dies zu tun? Weil die Überprüfung nicht zeitlich begrenzt ist. Es kann so lange wie möglich laufen. Verzögert dieser Ansatz die Anwendung besonders UI? –

+0

Es wird so lange laufen, wie es möglich ist, was die Zeit begrenzt, wie lange der Thread schläft, becoure, dass Sie weiter schauen, was [threading] (http://msdn.microsoft.com/en-us/library/7a2f3ay4 (v = vs.80) .aspx) ist und wenn der Thread in einer 'while (true) 'Endlosschleife mit' Thread.Sleep (8000) steht; 'bedeutet, dass der Thread nur EINMAL alle 8 Sekunden ausgeführt wird. –

+0

Ok. Ich sehe, was du meintest. Sie sagen, dass ich eine Flagge verwenden sollte, die es auf wahr oder falsch setzt. Wenn dies der Fall ist, führen Sie die Prüfung durch, andernfalls stoppt sie die Prüfung. Muss ich Thread verwenden, um einfrieren zu vermeiden? –

Verwandte Themen