有人可以给我一个抬头......我正在尝试使用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();
}
}
}
答案 0 :(得分:2)
我在1.2版本中对RasDialer的文档做了一些更改,希望能解决这个问题。
答案 1 :(得分:1)
显然,这是一个非常简单(但很普遍)的错误。
基本上RasDialer
组件仅在拨号操作正在进行时处理事件。
如果在连接尝试期间调制解调器线路可能已拔下,则会引发断开连接的事件。
如果要监视计算机上的客户端连接以进行连接/断开连接或其他几个事件,请使用RasConnectionWatcher
。当在拨号操作之外进行连接更改时,这将从Windows接收通知。
dotRAS上的文档在Google上特别稀疏......请访问http://dotras.codeplex.com以获取更多信息。 SDK附带的帮助文件也非常有用。