zoukankan      html  css  js  c++  java
  • 解决vs2005"how to make crossthread calls"超简单实例

    在学习WebRequest Web Response对header操作时,涉及到异步操作,按实例运行出错,vs2005提示“how to make cross-thread calls...”,查了一下资料。将原来的代码
    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;

    namespace Accessing_the_internet
    {
        
    public partial class Form1 : Form
        
    {
            
    public Form1()
            
    {
                InitializeComponent();

                WebRequest wrq 
    = WebRequest.Create("http://www.123de6.cn");
                wrq.BeginGetResponse(
    new AsyncCallback(OnResponse), wrq);
            }

            
    protected void OnResponse(IAsyncResult ar)
            
    {
                WebRequest wrq
    =(WebRequest)ar.AsyncState;
                WebResponse wrs
    =wrq.EndGetResponse(ar);
                
                
    //read the response
                WebHeaderCollection whc = wrs.Headers;
                MethodInvoker mi
    =new MethodInvoker()
                
                
    for (int i = 0; i < whc.Count; i++)
                
    {
                    listBox1.Items.Add(
    "Header"+ whc.GetKey(i)+" : " +whc[i]);
                }

            }




        }


    }

    改为这样,就可以实现对主线程listbox的操作。
    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;

    namespace Accessing_the_internet
    {
        
    public partial class Form1 : Form
        
    {
            WebHeaderCollection whc;
            
    public Form1()
            
    {
                InitializeComponent();

                WebRequest wrq 
    = WebRequest.Create("http://www.123de6.cn");
                wrq.BeginGetResponse(
    new AsyncCallback(OnResponse), wrq);
            }

            
    protected void OnResponse(IAsyncResult ar)
            
    {
                WebRequest wrq
    =(WebRequest)ar.AsyncState;
                WebResponse wrs
    =wrq.EndGetResponse(ar);
                
                
    //read the response
                whc = wrs.Headers;
                MethodInvoker mi 
    = new MethodInvoker(controla);
                
    this.BeginInvoke(mi);
                
                
            }

            
    private void controla()
            
    {
                
    for (int i = 0; i < whc.Count; i++)
                
    {

                    listBox1.Items.Add(
    "Header" + whc.GetKey(i) + " : " + whc[i]);
                }

            }

                
                
                
            }

        
    }
  • 相关阅读:
    redis 学习(一)
    spring 学习总结(一)
    Struts2 学习(三)
    Python3 高级特性
    Python3 模块
    Python3 函数式编程
    Python3 函数
    Python3 列表
    Python3 字符编码
    Java Servlet 回顾
  • 原文地址:https://www.cnblogs.com/meta/p/1090251.html
Copyright © 2011-2022 走看看