日期:2014-05-17  浏览次数:20806 次

C#中怎样可以及时的获取网络状态?
winform程序需要联网才能操作,怎样监控网络状态,网络只要中断就给用户提示信息《网络中断》。

------解决方案--------------------
用数据包啊,ping个ip地址或网址不通就是网络中断了
------解决方案--------------------
探讨

不好意思 刚才没写完


//导入dll
[DllImport("wininet.dll", EntryPoint = "InternetGetConnectedState")]
//判断网络状况的方法,返回值true为连接,false为未连接
public extern static bool InternetGetConnectedState(out int conState, ……

------解决方案--------------------
C# code
 public delegate void MyInvoke(string str);
        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);
                  
              }