Nous utilisons C# avec le .NET Compact Framework 2.0 sur un périphérique Windows CE 6. J'utilise l'appel RasDial
pour établir une connexion GPRS lorsque j'ai besoin de transférer des données entre un serveur et le périphérique.C#: Comment annuler l'appel RasDial?
Tout cela fonctionne bien. Cependant, parfois, lorsqu'il n'y a pas de signal, l'appel à RasDial
prend une éternité et ne peut être arrêté que par un démarrage à chaud du périphérique. Notre client souhaite que j'ajoute un bouton "Annuler" à la fenêtre d'état que nous affichons pour permettre à l'utilisateur d'annuler le processus de numérotation.
La question est: Comment? RasDial
est un appel synchrone et je ne vois pas un moyen d'annuler la demande. Une solution consisterait à exécuter l'appel dans un thread séparé et à annuler ce thread lorsque l'utilisateur appuierait sur le bouton "Annuler", mais cela ne semble pas être une très bonne solution.
Des pensées?
EDIT
Actuellement, je suis en train d'ajouter des fonctionnalités à une bibliothèque C++ j'ai ajouté au projet de toute façon, ce qui me permettrait d'utiliser RasHangup
d'annuler le cadran (faire appel asynchrone à RasDial
).
Des réflexions sur la façon dont je ferais cela avec C#/.NET Framework standard sans DLL C++ séparée ou bibliothèque tierce?
EDIT 2
vient de découvrir le Compact Framework classe dans .NET 2.0 MessageWindow
- Je vais essayer d'utiliser une sous-classe de cette option pour recevoir des messages d'état.
EDIT 3
Je travaille comment utiliser MessageWindow
pour mes besoins et je peux maintenant être averti de manière asynchrone sur le processus de connexion. Il semble que je l'ai résolu moi-même :-D
Malheureusement, je ne peux pas utiliser de bibliothèques tierces, mais j'ai réussi à utiliser la classe MessageWindow pour recevoir des messages d'état asynchrones. –
ok, donc j'appelle ça une règle stupide. Si la source est disponible gratuitement, pourquoi ne pourriez-vous pas nous le faire? Dans le but de vous faire perdre du temps à écrire le code vous-même? Il n'y a aucune valeur à cela, sauf si vous voulez être un expert RAS. – ctacke
Vrai - une règle stupide. Mais n'avons-nous pas tous rencontré des exigences stupides au cours de notre carrière? ;-) Je vais accepter votre anser de toute façon, car c'est un très bon conseil que j'aurais suivi, si ce n'est pour cette exigence stupide. –