zoukankan      html  css  js  c++  java
  • 关于多线程和异步

     

    计算密集型工作,采用多线程。

    IO密集型工作,采用异步机制。

     

    /// <summary>
    /// 多线程 新开一个线程执行程序
    /// </summary>
    private void btnMutilthread_Click(object sender, EventArgs e)
    {
    var thread = new Thread(DoSomething);
    thread.Start();
    }

    public void DoSomething()
    {
    var request = HttpWebRequest.Create("http://www.cnblogs.com/jx270");
    var response = request.GetResponse();
    var stream = response.GetResponseStream();
    using (StreamReader reader = new StreamReader(stream))
    {
    var content = reader.ReadToEnd();
    //textBox1.Text = content;
    SetText(content);
    }
    }

    /// <summary>
    /// 异步执行程序 减少占有CPU (DMA中断方式)
    /// </summary>
    private void btnAsyc_Click(object sender, EventArgs e)
    {
    var request = HttpWebRequest.Create("http://www.cnblogs.com/jx270");
    request.BeginGetResponse(this.AsyncCallbackImp, request);
    }

    public void AsyncCallbackImp(IAsyncResult ar)
    {
    WebRequest request = ar.AsyncState as WebRequest;
    var response = request.EndGetResponse(ar);
    var stream = response.GetResponseStream();
    using (StreamReader reader = new StreamReader(stream))
    {
    var content = reader.ReadToEnd();
    //textBox1.Text = content;
    SetText(content);
    }
    }

    void SetText(string argText)
    {
    if (textBox1.InvokeRequired)
    {
    var callBack = new DelegateMethod(SetText);
    textBox1.Invoke(callBack, new[] { argText });
    }
    else
    {
    textBox1.Text = argText;
    }
    }

    delegate void DelegateMethod(string argText);

  • 相关阅读:
    网易前端规范
    为什么很多网页里不直接用script标签引入JS文件,而是通过函数新建script,然后添加属性,再来引入呢?
    jQuery报错:Uncaught ReferenceError: $ is not defined
    PHP获得网页源码
    JAVA获取网页源码
    ctci(1)
    Hanoi
    计算多选框打勾的数目
    ThreadLocalClient小应用
    ajax动态刷新下拉框
  • 原文地址:https://www.cnblogs.com/jx270/p/3579554.html
Copyright © 2011-2022 走看看