.net 4.5 Test Async Task 异步测试
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
using System.Threading;
using System.IO;
namespace TestAsyncHttpClient
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
t.Interval = TimeSpan.FromMilliseconds(30);
t.Tick += t_Tick;
t.Start();
save("6666666666666"); }
int cnt = 0;
object lockObj = new object();
void t_Tick(object sender, EventArgs e)
{
txt2.Text = "" + DateTime.Now.Ticks;//用于辅助显示是否btnTest_Click 卡住了UI }
DispatcherTimer t = new DispatcherTimer(); private async void btnTest_Click(object sender, RoutedEventArgs e)
{
for (int i = 1; i <= 200; i++)
{ save("tttttttttt " + i); // sleep("para"+ i);
} return;
string urlString = string.Empty;
using (HttpClient client = new HttpClient())
{
//异步获取“http://10.32.112.82/epms/”内容(线程返回)。用户界面依旧可以操作
// urlString = await client.GetStringAsync(@"http://www.cnblogs.com");
await sleep("");
MessageBox.Show("hello"); } // txt.Text = urlString; } StringBuilder sb = new StringBuilder();
async Task sleep(string p) { await Task.Run(() =>
{
lock (lockObj) { cnt++;
} sb.Append("-" + cnt);
Thread.Sleep(1000);
Dispatcher.Invoke(() =>
{
txtLog.AppendText("" + p + " count:" + cnt + "\r\n");
txtLog.ScrollToEnd();
}); }); // MessageBox.Show("hello"); } async void save(string s) { string sFile =AppDomain.CurrentDomain.BaseDirectory + "\\t.txt";
if (File.Exists(sFile) == false) { FileStream fs= File.Create(sFile);
fs.Close();
fs = null; } using (Stream stream = File.Open(sFile, FileMode.Append, FileAccess.Write))
{
StreamWriter w = new StreamWriter(stream, Encoding.UTF8);
w.Write("trrytryrytyryrytrytrrytryrytyryrytrytrrytryrytyryrytrytrrytryrytyryrytrytrrytryrytyryrytrytrrytryrytyryrytrytrrytryrytyryrytrytrrytryrytyryrytrytrrytryrytyryrytrytrrytryrytyryrytrytrrytryrytyryrytrytrrytryrytyryrytrytrrytryrytyryrytry" + s + "\r\n");
w.Close();
stream.Close(); stream.Dispose();
await Task.Delay(200000);//延时这个方法体 } } private void Button_Click_1(object sender, RoutedEventArgs e)
{
MessageBox.Show(sb.ToString());
} }
}
UI
<Window x:Class="TestAsyncHttpClient.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Name="btnTest" Content="Test" HorizontalAlignment="Left" Margin="88,54,0,0" VerticalAlignment="Top" Width="192" Height="38" Click="btnTest_Click"/>
<TextBox Name="txt" AcceptsReturn="True" HorizontalAlignment="Left" Height="49" Margin="88,226,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="355"/>
<TextBox Name="txt2" HorizontalAlignment="Left" Margin="88,10,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Width="288" Height="39"/>
<RichTextBox Name="txtLog" Margin="88,111,74,99"/>
<Button Content="Button" HorizontalAlignment="Left" Margin="311,54,0,0" VerticalAlignment="Top" Width="111" Height="38" Click="Button_Click_1"/> </Grid>
</Window>
.net 4.5 Test Async Task 异步测试的更多相关文章
- async task 异步消息
async 和 await 是用来定义的异步方法,async 关键字是上下文关键字,原因在于只有当它修饰方法.lambda 表达式或匿名方法时,它才是关键字. 在所有其他上下文中,都会将其解释为标 ...
- c# async Task await Result 死锁
最近项目数据量较大,使用 async Task异步增加执行效率 遇到问题,当前有2个计算非常耗时,现在需要你优化一下,这2个计算并行执行,2个计算执行完成后将2个结果sum返回给用户 当前我是这样实现 ...
- Android菜鸟的成长笔记(13)——异步任务(Async Task)
原文:[置顶] Android菜鸟的成长笔记(13)——异步任务(Async Task) Android的UI线程主要负责处理用户的事件及图形显示,因此主线程UI不能阻塞,否则会弹出一个ANR(App ...
- .NET中的async和await关键字使用及Task异步调用实例
其实早在.NET 4.5的时候M$就在.NET中引入了async和await关键字(VB为Async和Await)来简化异步调用的编程模式.我也早就体验过了,现在写一篇日志来记录一下顺便凑日志数量(以 ...
- C#中 Thread,Task,Async/Await 异步编程
什么是异步 同步和异步主要用于修饰方法.当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法:当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务,调 ...
- ASP.NET sync over async(异步中同步,什么鬼?)
async/await 是我们在 ASP.NET 应用程序中,写异步代码最常用的两个关键字,使用它俩,我们不需要考虑太多背后的东西,比如异步的原理等等,如果你的 ASP.NET 应用程序是异步到底的, ...
- 【笔记】记一次.net语法await和async的异步编程实验与笔记。
1.实践代码全记录: using System; using System.Collections.Generic; using System.Diagnostics; using System.Li ...
- 『审慎』.Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历
异步Task简单介绍 本标题有点 哗众取宠,各位都别介意(不排除个人技术能力问题) —— 接下来:我将会用一个小Demo 把 本文思想阐述清楚. .Net 4.0 就有了 Task 函数 —— 异步编 ...
- spring boot中使用@Async实现异步调用任务
本篇文章主要介绍了spring boot中使用@Async实现异步调用任务,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 什么是“异步调用”? “异步调用”对应的是“同步 ...
随机推荐
- Y7000 安装ubuntu16.04.6 的tips :禁用nouveau 、Wifi 问题 、nvidia 驱动安装
由于最近要跑DeepLearning 所以在自己的Y7000上装一个Ubuntu ,自己碰了好多壁 写下来以防止自己忘掉以便后续再用! 配置:i7-8750H +GeForce GTX 1050Ti ...
- Tarjan水题系列(2):HNOI2012 矿场搭建
题目: 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后 ...
- 快速查看php文档技巧
在php源码中看到注释中的相关链接后 Ctrl+鼠标,浏览器打开 将输入栏的“en”改为“zh”即可变为中文文档,其他语言类推
- org.apache.httpcomponents:httpclient 工具类
基于httpclient 版本4.4.1 因为http连接需要三次握手,在需要频繁调用时浪费资源和时间 故采用连接池的方式连接 根据实际需要更改 连接池最大连接数.路由最大连接数 另一个需要注意的是 ...
- 2015GDCPC广东省赛总结
第二年参加省赛,也是我接触ACM这个行列已经过去了一年有余的里程碑.省赛个人排位,直到省赛现场赛结束后这段时间确实学到了很多很多的东西.按照惯例,先讲下比赛过程,题目3人分,我前,盛爷 ...
- html中的dl,dt,dd标签
html <dl> <dt> <dd>是一组合标签,使用了dt dd最外层就必须使用dl包裹,此组合标签我们也又叫表格标签,与table表格类似组合标签,故名我们也 ...
- 如何让form2中的数据源,显示在form1的dataGridView控件中呢????
定义一个static的静态变量,即可全局访问
- DRF框架 之基础配置
Vue框架的总结 """ 1.vue如果控制html 在html中设置挂载点.导入vue.js环境.创建Vue对象与挂载点绑定 2.vue是渐进式js框架 3.vue指令 ...
- lmhosts - samba的NetBIOS主机列表文件
lmhosts是一个samba的NetBIOS名字到IP地址映射文件. 描述 此文件是samba套件的一部分. lmhosts是一个samba的NetBIOS名字到IP地址映射文件.它与/etc/ho ...
- NLP 中任务及相关概念
命名实体识别 命名实体识别(Named Entity Recognition,简称NER),又称作"专名识别",是指识别文本中具有特定意义的实体,主要包括人名.地名.机构名.专有名 ...