2010-04-13 63 views
0

有人可以給我一個擡頭...我試圖使用dotRAS .NET控件,並且此代碼使用事件處理程序更改internetConnected(布爾值)的值...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

我已經對1.2版本中的RasDialer文檔進行了一些更改,希望能夠解決此問題。

+0

謝謝傑夫。我會更新源:) – Darbio 2010-09-10 13:49:12

+0

嘿@ jeff-winn,這是一個偉大的圖書館,謝謝。 – Ads 2016-11-02 02:24:26