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 异步测试的更多相关文章

  1. async task 异步消息

     async 和 await 是用来定义的异步方法,async  关键字是上下文关键字,原因在于只有当它修饰方法.lambda 表达式或匿名方法时,它才是关键字. 在所有其他上下文中,都会将其解释为标 ...

  2. c# async Task await Result 死锁

    最近项目数据量较大,使用 async Task异步增加执行效率 遇到问题,当前有2个计算非常耗时,现在需要你优化一下,这2个计算并行执行,2个计算执行完成后将2个结果sum返回给用户 当前我是这样实现 ...

  3. Android菜鸟的成长笔记(13)——异步任务(Async Task)

    原文:[置顶] Android菜鸟的成长笔记(13)——异步任务(Async Task) Android的UI线程主要负责处理用户的事件及图形显示,因此主线程UI不能阻塞,否则会弹出一个ANR(App ...

  4. .NET中的async和await关键字使用及Task异步调用实例

    其实早在.NET 4.5的时候M$就在.NET中引入了async和await关键字(VB为Async和Await)来简化异步调用的编程模式.我也早就体验过了,现在写一篇日志来记录一下顺便凑日志数量(以 ...

  5. C#中 Thread,Task,Async/Await 异步编程

    什么是异步 同步和异步主要用于修饰方法.当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法:当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务,调 ...

  6. ASP.NET sync over async(异步中同步,什么鬼?)

    async/await 是我们在 ASP.NET 应用程序中,写异步代码最常用的两个关键字,使用它俩,我们不需要考虑太多背后的东西,比如异步的原理等等,如果你的 ASP.NET 应用程序是异步到底的, ...

  7. 【笔记】记一次.net语法await和async的异步编程实验与笔记。

    1.实践代码全记录: using System; using System.Collections.Generic; using System.Diagnostics; using System.Li ...

  8. 『审慎』.Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历

    异步Task简单介绍 本标题有点 哗众取宠,各位都别介意(不排除个人技术能力问题) —— 接下来:我将会用一个小Demo 把 本文思想阐述清楚. .Net 4.0 就有了 Task 函数 —— 异步编 ...

  9. spring boot中使用@Async实现异步调用任务

    本篇文章主要介绍了spring boot中使用@Async实现异步调用任务,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 什么是“异步调用”? “异步调用”对应的是“同步 ...

随机推荐

  1. python如何安装第三方模块

    系统 Windows 10 方法一,通过在命令行中通过pip命令安装 1. 打开cmd 2. 输入命令:pip install 目标模块的名字,例如, pip install numpy 3. 按回车 ...

  2. 模板 - Floyd

    void Floyd(){ for(int k = 1; k <= n; ++k) { for(int i = 1; i <= n; ++i) { for(int j = 1; j < ...

  3. jquery.lazyload (JS懒加载框架使用详解)

    /** 本地加载方式加载JS*/        NSString *path = [[NSBundle mainBundle] pathForResource:@"jquery.js&quo ...

  4. MySql二进制版安装教程

    1.检查是否已安装过mariadb,若有便删除(linux系统自带的) [root@localhost /]# rpm -qa | grep mariadb [root@localhost /]# r ...

  5. Docker数据目录相关操作

    数据目录挂载 我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器.使用 -v 选项 docker run -id -v /宿主机绝 ...

  6. R语言模型选择之精度准则与最大值法问题

    在模型选择中我们一般用caret包train函数建立模型,并对模型进行评判 方法1: ) tr_control<-trainControl(method = ) # 创建随机森林模型 model ...

  7. 【转】交换分区SWAP

    SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用. 它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对 ...

  8. Codeforces 912 质因数折半 方格数学期望

    A B #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #d ...

  9. mysql 数据库url

    jdbc:mysql://localhost:3306/database?useUnicode=true&useJDBCCompliantTimezoneShift=true&useL ...

  10. 《转》tensorflow学习笔记

    from http://m.blog.csdn.net/shengshengwang/article/details/75235860 1. RNN结构 解析: (1)one to one表示单输入单 ...