private void button1_Click(object sender, EventArgs e)
        {
            results.Items.Clear();
            string addr = address.Text;
            Object state = new Object();            OnResovled = new AsyncCallback(Resolved);
       
           
            Dns.BeginResolve(addr, OnResovled, state);
             }        private void Resolved(IAsyncResult ar)
        {
            string buffer;
             IPHostEntry iphe = Dns.EndResolve(ar);
            buffer = "Host name:" + iphe.HostName;
            results.Items.Add(buffer);            foreach (string alias in iphe.Aliases)
            {
                buffer = "Alias:" + alias;
                results.Items.Add(buffer);            }            foreach (IPAddress addrs in iphe.AddressList)
            {
                buffer = "Address:" + addrs.ToString();
                results.Items.Add(buffer);
            }
        }运行报错:线程间操作无效: 从不是创建控件“results”的线程访问它。

解决方案 »

  1.   

    装了MSDN的话,报错后点链接,查看相应的帮助
      

  2.   

      public Form1()
            {
                InitializeComponent();
                Form1.CheckForIllegalCrossThreadCalls = false;// 设置为FLASE         }
      

  3.   

    这种办法也可以,不过也可以通过异步方法解决。
    见:http://blog.csdn.net/zhoufoxcn/archive/2007/10/19/1832819.aspx
      

  4.   


     private void Resolved(IAsyncResult ar) 

    if (this.InvokeRequired)
    {
      OnResovled = new AsyncCallback(Resolved); 
      this.Invoke(OnResovled , new object[] { ar});
    }
    else
    {           
                string buffer; 
                IPHostEntry iphe = Dns.EndResolve(ar); 
                buffer = "Host name:" + iphe.HostName; 
                results.Items.Add(buffer);             foreach (string alias in iphe.Aliases) 
                { 
                    buffer = "Alias:" + alias; 
                    results.Items.Add(buffer);             }             foreach (IPAddress addrs in iphe.AddressList) 
                { 
                    buffer = "Address:" + addrs.ToString(); 
                    results.Items.Add(buffer); 
                } 
     }
    }