2010-04-13 3 views
0

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

Но, похоже, что состояние 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(); 
      } 
     } 
    } 

ответ

1

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

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

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

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

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

1

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

+0

Спасибо Джефф. Я обновлю источник :) – Darbio

+0

Эй, @ jeff-winn, это отличная библиотека, спасибо. – Ads

Смежные вопросы