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]);
                }

            }

                
                
                
            }

        
    }
  • 相关阅读:
    一个docker容器中运行多个服务还是弄一堆docker容器运行?
    golang配置 GoGetProxyConfig,goproxy.io的介绍
    Docker下运行Mysql报错 mbind: Operation not permitted
    linux允许root用户远程登录
    docker-compose 安装 mysql并初始化用户与sql文件
    spring报错 xxxxxxxxxxxx has been injected into other beans
    mysql报错[Warning] IP address 'xxxx' could not be resolved: Name or service not known错误解决
    idea 高效找出全部未被使用的代码
    springboot配置Filter的两种方法
    .net core Elasticsearch 查询更新
  • 原文地址:https://www.cnblogs.com/meta/p/1090251.html
Copyright © 2011-2022 走看看