zoukankan      html  css  js  c++  java
  • C# 请求数据 模拟多线程下载文件

    原地址:http://www.cnblogs.com/Opiece/p/4803836.html

    客户端

    public static string strContent = "";//用于存储时间信息
    private void button1_Click(object sender, EventArgs e)
    {
        //在实际的开发中,当不需要对线程进行操作的话,不要手动去创建线程,尽量的使用线程池技术去创建开启一个线程,
        //可以提高线程的使用效率,使用线程池技术也可以提高应用程序的效率。
    
        strContent += $"开始时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}
    ";
    
        Task.Factory.StartNew(() => {
            loadData("Handler1.ashx");
            strContent += $"线程1完成时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}
    ";
        });
    
        Task.Factory.StartNew(() => {
            loadData("Handler2.ashx");
            strContent += $"线程2完成时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}
    ";
        });
    
        //使用工厂创建一个工作任务项,并执行了
        //Task t1 = Task.Factory.StartNew(() => {
        //    //执行代码
        //    Thread.Sleep(2000);
        //    MessageBox.Show("当前的线程是:" + Thread.CurrentThread.ManagedThreadId);
        //});
    
        //Task t1 = new Task(() =>
        //    {
        //        Thread.Sleep(2000);
        //        MessageBox.Show("当前的线程是:" + Thread.CurrentThread.ManagedThreadId);
        //    });
        //t1.Start();            
        //MessageBox.Show(response);
    }
            
           
    
    private void button2_Click(object sender, EventArgs e)
    {
        MessageBox.Show($"消息:{strContent}");
    }
    
    /// <summary>
    /// 模拟下载资源
    /// 不同Handler请求完成的时间不一样
    /// Handler1.ashx 需要5秒
    /// Handler2.ashx 需要10秒
    /// </summary>
    /// <param name="HandlerName"></param>
    public void loadData(string HandlerName)
    {
        WebClient wc = new WebClient();
        string strUrlPara = "{"action":"mobileLogin","did":147,"param":{"uid":"全角色syf","loginType":2,"pwd":""},"sid":"358240051111110","timestamp":null,"token":null}";
        strUrlPara = HttpUtility.UrlEncode(strUrlPara);
        byte[] data = new ASCIIEncoding().GetBytes(strUrlPara);
        byte[] responseArray = wc.UploadData($"http://localhost:37443/{HandlerName}", data);
        var response = Encoding.UTF8.GetString(responseArray);
    }
    View Code

    服务端

    public class Handler1 : IHttpHandler
        {
    
            public void ProcessRequest(HttpContext context)
            {
                System.Threading.Thread.Sleep(5 * 1000);
                context.Response.ContentType = "text/plain";
                context.Response.Write("Hello World");
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    View Code
    public class Handler2 : IHttpHandler
        {
    
            public void ProcessRequest(HttpContext context)
            {
                System.Threading.Thread.Sleep(10 * 1000);
                context.Response.ContentType = "text/plain";
                context.Response.Write("Hello World");
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    View Code
  • 相关阅读:
    jQuery插件开发模式
    优化布局
    jquery easyui 选项卡
    easy ui 点击行展开与折叠
    考拉海购技术支持的前世今生
    跑的好好的 Java 进程,怎么突然就瘫痪了
    Dubbo 如何成为连接异构微服务体系的最佳服务开发框架
    微服务治理实践:如何对单点异常进行自动摘除
    盘点阿里巴巴 15 款开发者工具
    千万创业者的自白:踩过坑才明白这些真相!
  • 原文地址:https://www.cnblogs.com/guxingy/p/9448691.html
Copyright © 2011-2022 走看看