dotRAS未连接状态未触发

时间:2010-04-13 09:33:30

标签: c# .net ras dotras

有人可以给我一个抬头......我正在尝试使用dotRAS .NET控件,并且此代码使用事件处理程序更改internetConnected(boolean)的值...

但似乎状态RasConnectionState.Disconnected不是由dotRAS hangup()触发..

有什么想法吗?我做错了吗?还是我设法找到了一个错误?

    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 个答案:

答案 0 :(得分:2)

我在1.2版本中对RasDialer的文档做了一些更改,希望能解决这个问题。

答案 1 :(得分:1)

显然,这是一个非常简单(但很普遍)的错误。

基本上RasDialer组件仅在拨号操作正在进行时处理事件。

如果在连接尝试期间调制解调器线路可能已拔下,则会引发断开连接的事件。

如果要监视计算机上的客户端连接以进行连接/断开连接或其他几个事件,请使用RasConnectionWatcher。当在拨号操作之外进行连接更改时,这将从Windows接收通知。

dotRAS上的文档在Google上特别稀疏......请访问http://dotras.codeplex.com以获取更多信息。 SDK附带的帮助文件也非常有用。