异步测试代码

            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. Java如何格式化月份?

    在Java中,如何以MMMM格式格式化时间? 这个示例使用SimpleDateFormat('MMMM')构造函数和SimpleDateFormat类的sdf.format(date)方法来格式化月份 ...

  2. 关于makefile文件研究

    makefile文件采用依赖倒推的模式进行编译. 主要由以下几步构成: 1 申明 2 default 默认生成的对象 3 TARGET 链接过程 4 cpp 编译过程 5 生成一个version.h文 ...

  3. unity---------------------关于BuildAssetBundles的使用(打包)

    using UnityEditor;using UnityEngine; public class BuildAssetBundle{ /// <summary> /// 点击后,所有设置 ...

  4. NPOIHelp 按固定模板导出和直接导出

    完整代码如下 using System; using System.Collections.Generic; using System.Data; using System.Text; using N ...

  5. Struts2+Hibernate+Spring(SSH)三大框架整合jar包

    Struts2 + Spring3 + Hibernate3 框架整合 1. 每个框架使用 (开发环境搭建 )* 表现层框架 struts2 1) jar包导入: apps/struts2_blank ...

  6. 小程序的tab切换事件

    index.wxml代码 <view class="tab-left" > <view " bindtap="tab">tab ...

  7. Thinkphp5 Route用法

    域名路由:domain 1.application/router.php 文件位置,吧一下代码放进去就可以了 use think\Route; Route::domain('app.tp5a.com' ...

  8. 制作做最小的fedora、ubuntu , jeos系统

    之前做过, 2018年4月底,最新的fedora28 .ubuntu18.04发布后,自己又尝试做了下. ubuntu的成功了,比较简单: fedora的其实不用自己去制作,直接定制官方的Atomic ...

  9. django test模块

    今天试了试django自带的test模块,断点执行到一下代码中时发现一点儿小问题: def _create_test_db(self, verbosity, autoclobber): "& ...

  10. tornado入门1

    Tornado web server 是使用Python编写出來的一个极轻量级.高可伸缩性和非阻塞IO的Web服务器软件,著名的 Friendfeed 网站就是使用它搭建的. Tornado 跟其他主 ...