2009-10-14 11 views
1

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

Répondre

2

Vous pouvez jeter un oeil à la OpenNETCF RAS library over on CodePlex. Tout a été fait.

+0

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. –

+0

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

+0

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. –