dotRAS Отключенное состояние не сработало - PullRequest
0 голосов
/ 13 апреля 2010

Может кто-нибудь подсказать мне ... Я пытаюсь использовать элемент управления dotRAS .NET, и этот код для изменения значения internetConnected (логическое значение) с помощью обработчика событий ...

Но кажется, что состояние RasConnectionState.Disconnected не вызывается зависанием dotRAS () ..

Есть идеи? Я делаю это совершенно неправильно ... или мне удалось найти ошибку?

    public class USBModem
    {
        // private vars
        private RasDialer dialer = new RasDialer();
        private bool internetConnected = false;

        /// <summary>
        /// Default constructor for USBModem
        /// </summary>
        public USBModem()
        {
            // Add Events for dialer
            dialer.StateChanged += new EventHandler<StateChangedEventArgs>(dialer_StateChanged);
        }

        void dialer_StateChanged(object sender, StateChangedEventArgs e)
        {
            // Handle state changes here
            switch (e.State)
            {
                case RasConnectionState.Connected:
                    internetConnected = true;
                    Console.WriteLine(e.State.ToString());
                    break;
                case RasConnectionState.Disconnected:
                    internetConnected = false;
                    Console.WriteLine(e.State.ToString());
                    break;
                default:
                    Console.WriteLine("INFO -> Unhandled state: " + e.State.ToString());
                    break;
            }
        }

        public void ConnectInternet(string connectionName)
        {
            // Dial
            dialer.PhoneBookPath = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers);
            dialer.EntryName = connectionName;
            dialer.DialAsync();
        }

        public void DisconnectInternet()
        {
            foreach (RasConnection connection in dialer.GetActiveConnections())
            {
                connection.HangUp();
            }
        }
    }

Ответы [ 2 ]

2 голосов
/ 02 сентября 2010

Я внес некоторые изменения в документацию по RasDialer в версии 1.2, чтобы, надеюсь, решить эту проблему.

1 голос
/ 14 апреля 2010

Видимо, очень простая (но распространенная) ошибка.

Обычно компонент RasDialer обрабатывает события только во время выполнения операции набора номера.

Событие отключено, если, возможно, модемная линия отключилась во время попытки подключения.

Если вы хотите отслеживать клиентские соединения на машине на предмет подключения / отключения или пары других событий, используйте RasConnectionWatcher. Это будет получать уведомления от Windows, когда изменения соединения сделаны вне операции набора номера.

Документация по dotRAS особенно редка в Google ... Для получения дополнительной информации обратитесь к http://dotras.codeplex.com. Файлы справки, включенные в SDK, также очень полезны.

...