winform程序需要联网才能操作,怎样监控网络状态,网络只要中断就给用户提示信息《网络中断》。
解决方案 »
- textbox每次重新获得焦点后,中文状态下依然只能输入英文.
- 如何保存设计模式下UserControl控件中的DagaGridView子控件的DataGridViewColumn属性?
- 循環复制文件
- 关于C# 2.0的泛型?
- vs2003 C#环境下成一个数据集会产生一个.xsd的文件,可是查找代码的时候还有一个同名的.cs文件,为什么看不到
- 急~求救一个关于窗口全屏的问题
- 用api监控计算机!急啊!
- 如何在C#中输出数据表的单一字段值?
- 还是正则表达式的问题,各位老大别嫌麻烦。
- 我在调试的时候怎么int型的都是以16进制表示的?
- 关于String Template的求助...高手帮忙!thanks~
- c# 将另一个程序嵌入到窗体中
[DllImport("wininet.dll", EntryPoint = "InternetGetConnectedState")]
//判断网络状况的方法,返回值true为连接,false为未连接
public extern static bool InternetGetConnectedState(out int conState, int reder);
//在你的button事件中写下如下代码就行
void Refresh();
{
while(true) int n =0;
if (InternetGetConnectedState(out n,0)) {
MessageBox.Show("网终处于连接状态"); }
else {
MessageBox.Show("网络处于未连接状态"); }
}
//导入dll
[DllImport("wininet.dll", EntryPoint = "InternetGetConnectedState")]
//判断网络状况的方法,返回值true为连接,false为未连接
public extern static bool InternetGetConnectedState(out int conState, int reder);
//在你的button事件中写下如下代码就行
void Refresh();
{
while(true)
{
int n =0;
if (!InternetGetConnectedState(out n,0))
{
MessageBox.Show("网络处于未连接状态"); }
}
}
调用刷新事件Refresh()就可以了 while里面最好加个Thread.Sleep(1000); 设置刷新事件 调用的时候用线程哦兄弟
广域网的话只能Ping。别的方法几乎没有可靠的。
如果判断本机的通信是否断开。.net提供了一个属性。
vb.net是在my命名空间下很容易找。
c#的好象是在net命名空间下。
我自己是写了一个线程的方法,定时去检查,我想问下,有没有别的什么方法?这方法会不会影响系统效率?
Thread t1 = new Thread(GetNetStatus);
t1.Start();
private static void GetNetStatus()
{
System.Timers.Timer t = new System.Timers.Timer();
t.Interval = 1000;//设置时间间隔为100ms
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true)
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
t.Elapsed += new System.Timers.ElapsedEventHandler(IsInternetConnected);//到达时间的时候执行事件
}
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue);
public static void IsInternetConnected(object source, System.Timers.ElapsedEventArgs e)
{
int i = 0;
string message = "";
bool flag = InternetGetConnectedState(out i, 0);
if (flag)
{
message = "网络连接正常";
}
else
{
message = "网络连接中断";
MessageBox.Show(message);
} }
private void Form1_Load(object sender, EventArgs e)
{
Thread t1 = new Thread(GetNetStatus);
t1.IsBackground = true;
t1.Start();
}
private void SetText(string s)
{
if (textbox1.InvokeRequired)
{
MyInvoke _myInvoke = new MyInvoke(SetText);
this.Invoke(_myInvoke, new object[] { s });
}
else
{
textbox1.Text = s;
}
}
private void GetNetStatus()
{
System.Timers.Timer t = new System.Timers.Timer();
t.Interval = 1000;//设置时间间隔为100ms
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true)
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
t.Elapsed += new System.Timers.ElapsedEventHandler(IsInternetConnected);
//到达时间的时候执行事件
}
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue);
private void IsInternetConnected(object source, System.Timers.ElapsedEventArgs e)
{
int i = 0;
string message = "";
bool flag = InternetGetConnectedState(out i, 0);
if (flag)
{
message = "网络连接正常";
}
else
{
message = "网络连接中断";
}
SetText(message);
}经过测试发现网络一直都正常,把网卡暂停使用也不会提示中断!晕!