【NET多线程】C#多线程异步请求多个url地址
异步测试代码
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地址的更多相关文章
- [Xcode 实际操作]八、网络与多线程-(12)使用异步Post方式查询IP地址信息
目录:[Swift]Xcode实际操作 本文将演示如何通过Post请求,异步获取IP地址信息. 异步请求与同步请求相比,不会阻塞程序的主线程,而会建立一个新的线程. 在项目导航区,打开视图控制器的代码 ...
- java 获取请求的完整url地址
String url=request.getRequestURL()+"?"+request.getQueryString();
- 09.1.VUE学习之watch监听属性变化实现类百度搜索栏功能ajax异步请求数据,返回数组
09.1html里 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- 09.VUE学习之watch监听属性变化实现类百度搜索栏功能ajax异步请求数据,返回字符串
cmd下安装axios npm install axios 安装好后,会多出node_modules文件夹 思路: 监听data里的word改变时,发送ajax异步请求数据, 把返回的数据赋值给dat ...
- NSURLConnection和NSMutableURLRequest 实现同步、异步请求
我是走向ios的一个小书童,我有很多不懂的,新鲜的知识去学习,去掌握! 我首先要吐槽一下: 那些不负责的博友!你分享知识本来是好事!可是你直接Control+V就是你的不对了! 尼玛,直接Contro ...
- jquery实现get的异步请求
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html& ...
- ASP.NET Core获取请求完整的Url
在ASP.NET项目中获取请求完整的Url: 获取System.Web命名空间下的类名为HttpRequestBase的Url方法: /// <summary>在派生类中替代时,获取有关当 ...
- libcurl的封装,支持同步异步请求,支持多线程下载,支持https
最近在做一个项目,需要用到http get post等 需求分析需要做到同步和异步,异步请求的返回以可选的回调通知的方式进行. 本人以Linux为例,一步一步的来实现. 配置并且编译libcurl我以 ...
- Java多线程同步和异步问题
我们首先来说一下多线程: 多线程很形象的例子就是:在一个时刻下,一个班级的学生有人在拖地,有人在擦窗户,有人在擦桌子 按照单线程程序,肯定是先去拖地,再去擦窗户,再去擦桌子.但是在多线程就好像他们在一 ...
随机推荐
- Eclipse JUnit简单示例
在本节中,我们将看到一个简单的JUnit例子. 先创建一个工程,名称为:CalculateTest,并在这个工程上点击右键,选择:Build Path -> Add Library -> ...
- e826. 获得和设置JSplitPane分开的位置
The location of a divider is measured in pixels from either the left edge (in the case of a horizont ...
- e868. 获取和设置本地外观
By default, Swing uses a cross-platform look and feel called Metal. In most cases, it is more desira ...
- vue form表单绑定事件与方法
使用v-on绑定事件 <button @click="hello">Hello</button><br /> <button @click ...
- Yii2 cache的用法(1)
数据缓存需要缓存组件提供支持,它代表各种缓存存储器, 例如内存,文件,数据库. 'components' => [ 'cache' => [ 'class' => 'yii\cach ...
- UITableView:改变 TableHeaderView 的高度
参考:http://stackoverflow.com/a/526825 有这么一种需求,在列表顶端显示一些别样的数据,而这个别样的数据则需要通过一个别样的 View 来展现,它便是 UITableV ...
- 内存管理 初始化(四)mem_init bootmem 迁移至伙伴系统
mm_init中执行mem_init,将原通过bootmem分配器管理的低端内存 及 通过meminfo得知的高端内存释放到伙伴系统中,最后bootmem位图本身占用的低端内存物理页也被释放进伙伴系 ...
- vue用阿里云oss上传图片使用分片上传只能上传100kb以内的解决办法
首先,vue和阿里云oss上传图片结合参考了 这位朋友的 https://www.jianshu.com/p/645f63745abd 文章,成功的解决了我用阿里云oss上传图片前的一头雾水. 该大神 ...
- SSM框架快速整合实例——学生查询
一.快速准备 SSM 框架即 Spring 框架.SpringMVC 框架.MyBatis 框架,关于这几个框架的基础和入门程序,我前面已经写过几篇文章作为基础和入门介绍了.这里再简单的介绍一下: 1 ...
- django 配置中STATICFILES_DIRS 和STATIC_ROOT不能同时出现
系统环境: win7 django版本查看: 启动django项目的时候,一直找不到静态资源,很奇怪放在linux服务器上的时候好好的,拿下来随便修改了配置就说url找不到了. 用wingIDE没有任 ...