无法从NetworkAddressChangedEventHandler更改标签文本c#

时间:2015-06-18 15:07:00

标签: c# multithreading visual-studio-2010

我首先要说的是,我不知道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";
        }
    }

现在,当我禁用了一张nic卡时,我可以看到调用了AddressChangedCallback,但是VS正在停止或出现错误“跨线程操作无效:控制'label1'是从创建它的线程以外的线程访问的。 “

我需要在代码中更改以便从AddressChangedCallback更改标签

谢谢:)

1 个答案:

答案 0 :(得分:0)

经过对该主题的更多搜索,我发现了这个.Invoke((MethodInvoker)委托 正在做我需要的事情

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