2015-06-18 35 views
0

我将开始说我不知道​​c#非常好,这很可能是一个非常简单的解决方案。无法更改来自NetworkAddressChangedEventHandler的标签文本c#

我想要实现的是当网络状态改变我想改变标签

我发现,当我禁用网卡,当网络发生变化

using System.Net.NetworkInformation; 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     NetworkChange.NetworkAddressChanged += new          
     NetworkAddressChangedEventHandler(AddressChangedCallback);      
    } 

    public void AddressChangedCallback(object sender, EventArgs e)      
    { 

     NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces(); 
     foreach (NetworkInterface n in adapters) 
     { 
      label1.Text = "bla bla"; 
     } 
    } 
现在

如何通过靶向和事件卡我可以看到AddressChangedCallback被调用,但随后VS正在停止或出现错误“跨线程操作无效:控制'label1'从其创建线程以外的线程访问。”

我需要在我的代码更改,以便就我发现this.Invoke((MethodInvoker)委托 是受到更多的搜索后,从AddressChangedCallback更改标签

谢谢:)

+2

可能重复[如何更新在C#中的另一个线程的GUI?](http://stackoverflow.com/questions/661561/how-to-update-the-gui-from -another线程在-c)的 – cubrr

回答

0

做什么,我需要的

 this.Invoke((MethodInvoker)delegate 
     { 
       //your code here 
     });