2012-03-22 3 views
0

Je travaille actuellement sur l'une des fonctions dans une application mobile qui nécessite de surveiller en permanence s'il y a des périphériques Bluetooth hors limites ou non. Si hors de portée, le bouton correspondant pour l'appareil doit être désactivé. Une des options que je peux penser est que je vérifie l'état de chaque appareil bluetooth connecté périodiquement en utilisant la minuterie en envoyant un événement. Si la vérification périodique indique que l'un des périphériques est hors de portée, le bouton de cet appareil sera désactivé. Cependant, je ne peux pas penser à une méthode pour détecter si elle est hors de portée ou non. En wpf, j'ai utilisé caliburn qui peut envoyer un événement dans l'application sage. En d'autres termes, lorsque l'événement est envoyé, toute partie de l'application reçoit cet événement tant qu'ils sont abonnés à cet événement. Est-ce que quelqu'un a une idée de la façon d'y parvenir?Événement dans winform - .NET Compact Framework 3.5

Merci pour toute aide à l'avance.

Merci,

Charles Lau

Répondre

0

CF 3.5 a des travailleurs de fond (2.0 n'a pas). Vous pouvez créer un agent de backround qui vérifie périodiquement l'état des périphériques bluetooth et envoie un événement ReportProgress lorsque le statut de l'un change. Vous pouvez avoir tout ce dont vous avez besoin pour vous abonner à l'événement.

L'utilisation par défaut de ReplorProgress est envoyé un entier indiquant la progression du travailleur de fond, mais ReportProgress vous permet d'envoyer un objet comme second argument: http://msdn.microsoft.com/en-us/library/a3zbdb1t.aspx

Si vous ne l'avez pas utilisé la classe BackgroundWorker avant Voici un guide rapide: http://www.albahari.com/threading/part3.aspx

Cela fonctionnera bien avec winforms. Il évite le tout:

if (ctrl.InvokeRequired) 
{ 
    ctrl.Invoke(action); 
} 
else 
{ 
    action(); 
} 
Questions connexes