异步测试代码

            System.Diagnostics.Debug.Print("start");
new Thread(new ThreadStart(new Action(() =>
{
for (int i = ; i < ; i++)
{
System.Diagnostics.Debug.Print(i + "\r\n");
} System.Diagnostics.Debug.Print("Thread over");
}))).Start();
System.Diagnostics.Debug.Print("Main over");

输出

"start"
"Main over"
"0\r\n"
"1\r\n"
"2\r\n"
"3\r\n"
"4\r\n"
"5\r\n"
"6\r\n"
"7\r\n"
"8\r\n"
"9\r\n"
"Thread over"

效果是主线程已经结束了,子线程才开始

       var url = "http://h5.ktgj.com/";

            var list_task = new List<Task<string>>();
for (int i = ; i < ; i++)
{
var temp_url = url + i;
var task = Task.Run(async () =>
{
System.Diagnostics.Debug.Print("temp_url=" + temp_url);
var client = new System.Net.Http.HttpClient();
var html = await client.GetStringAsync(temp_url);
System.Diagnostics.Debug.Print("temp_url=" + temp_url + " is ok");
return html;
}); list_task.Add(task);
} Task.WaitAll(list_task.ToArray()); foreach (var item in list_task)
{
System.Diagnostics.Debug.Print(item.Result);
}

Task.WaitAll()

等所有请求都返回了html,才开始后续处理

            //await Task.WhenAll(task1, task2, task3);

            //ThreadPool.QueueUserWorkItem(_ =>
//{
// Thread.Sleep(1000);
// Thread.Sleep(10); System.Diagnostics.Debug.Print("ThreadPool.QueueUserWorkItem");
//}); ////不使用await:Task多线程
//Task.Run(() =>
//{
// Thread.Sleep(1000);
// Thread.Sleep(10); System.Diagnostics.Debug.Print("Task.Run");
//});

【NET多线程】C#多线程异步请求多个url地址的更多相关文章

  1. [Xcode 实际操作]八、网络与多线程-(12)使用异步Post方式查询IP地址信息

    目录:[Swift]Xcode实际操作 本文将演示如何通过Post请求,异步获取IP地址信息. 异步请求与同步请求相比,不会阻塞程序的主线程,而会建立一个新的线程. 在项目导航区,打开视图控制器的代码 ...

  2. java 获取请求的完整url地址

    String url=request.getRequestURL()+"?"+request.getQueryString();

  3. 09.1.VUE学习之watch监听属性变化实现类百度搜索栏功能ajax异步请求数据,返回数组

    09.1html里 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  4. 09.VUE学习之watch监听属性变化实现类百度搜索栏功能ajax异步请求数据,返回字符串

    cmd下安装axios npm install axios 安装好后,会多出node_modules文件夹 思路: 监听data里的word改变时,发送ajax异步请求数据, 把返回的数据赋值给dat ...

  5. NSURLConnection和NSMutableURLRequest 实现同步、异步请求

    我是走向ios的一个小书童,我有很多不懂的,新鲜的知识去学习,去掌握! 我首先要吐槽一下: 那些不负责的博友!你分享知识本来是好事!可是你直接Control+V就是你的不对了! 尼玛,直接Contro ...

  6. jquery实现get的异步请求

    <%@ page contentType="text/html;charset=UTF-8" language="java" %><html& ...

  7. ASP.NET Core获取请求完整的Url

    在ASP.NET项目中获取请求完整的Url: 获取System.Web命名空间下的类名为HttpRequestBase的Url方法: /// <summary>在派生类中替代时,获取有关当 ...

  8. libcurl的封装,支持同步异步请求,支持多线程下载,支持https

    最近在做一个项目,需要用到http get post等 需求分析需要做到同步和异步,异步请求的返回以可选的回调通知的方式进行. 本人以Linux为例,一步一步的来实现. 配置并且编译libcurl我以 ...

  9. Java多线程同步和异步问题

    我们首先来说一下多线程: 多线程很形象的例子就是:在一个时刻下,一个班级的学生有人在拖地,有人在擦窗户,有人在擦桌子 按照单线程程序,肯定是先去拖地,再去擦窗户,再去擦桌子.但是在多线程就好像他们在一 ...

随机推荐

  1. PHP + Smarty + html5 构建Wap应用

    一 简介     Smarty是一个PHP编写的模板引擎(template engine),主要用于构建web应用程序的表示层.Smarty的主页是http://www.smarty.net/down ...

  2. Java如何检查线程是否停止?

    在Java编程中,如何检查线程是否停止? 以下示例演示如何通过使用isAlive()方法来检查线程是否已停止. // from W w w .Y I I b AI.c o M package com. ...

  3. Eclipse使用资源管理器打开选中文件/目录

  4. tracert

    TRACERT命令 编辑 Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP数据包访问目标所采取的路径.Tracert 命令使用用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确 ...

  5. 转载: IM系统架构设计之浅见

    出处:http://yaocoder.blog.51cto.com/2668309/1412029 背 景:除去大名鼎鼎的QQ这款即时聊天工具,还有许多细分行业的IM,比如淘宝阿里旺旺.网易泡泡.YY ...

  6. 7款效果惊人的HTML5/CSS3应用

    今天是周末,我为大家收集7个比较经典的HTML5/CSS3应用,每一个都提供源代码,效果非常惊人. 1.CSS3/jQuery创意盒子动画菜单 作为前端开发者,各种各样的jQuery菜单见过不少,这款 ...

  7. CentOS系统很卡的基本排查方法

    来源:http://www.centoscn.com/CentOS/Intermediate/2017/1012/9032.html 一. 查看内存使用情况  1. free命令可查看内存使用情况 2 ...

  8. js如何获取asp.net服务器端控件的值(label,textbox,dropdownlist,radiobuttonlist等)

    js如何获取asp.net服务器端控件的值(label,textbox,dropdownlist,radiobuttonlist等) 欢迎访问原稿:http://hi.baidu.com/2wixia ...

  9. 通过tarball形式安装HBASE Cluster(CDH5.0.2)——配置分布式集群中的YARN ResourceManager 的HA

    <?xml version="1.0"?> <!-- Licensed under the Apache License, Version 2.0 (the &q ...

  10. Thinkphp5笔记四:设置模板路径

    默认的模板路径在模块/view文件里面.如果你觉得这样不太方便管理,想要把他设置Template目录下,可以这样做. 模板参数 ,能够影响的它参数,是当前模块下config.php template- ...