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. 并查集专题: HDU1232畅通工程

    畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  2. 2019 安洵杯 Re 部分WP

    0x01.EasyEncryption 测试文件:https://www.lanzous.com/i7soysb 1.IDA打开 int sub_416560() { int v0; // eax i ...

  3. fpga配置方式 .jic固化为ps模式

    FPGA不同下载方式的区别[扫盲]以及如何利用AS模式固化程序(转载)     主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式: AS由FPGA器件引导配置操作过程,它控制着 ...

  4. CentOS7编译安装MySQL8.0

    1.下载mysql8.0.16源码包和cmake源码包 cd /usr/local/srcwget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-b ...

  5. web框架-(二)Django基础

    上面我们已经知道Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Sessi ...

  6. Linux一键安装LNMP环境

    Linux一键安装LNMP环境 官方地址:https://lnmp.org/. 参考安装步骤:https://lnmp.org/install.html. 一键安装可以选择mysql版本.php版本, ...

  7. 64bit机器编译32bit汇编

    sudo apt-get install gcc-multilib sudo apt-get install g++-multilib gcc -m32  -S a.c -o a.s gcc -m64 ...

  8. vue 之 双向绑定原理

    一.实现双向绑定 详细版: 前端MVVM实现双向数据绑定的做法大致有如下三种: 1.发布者-订阅者模式(backbone.js) 思路:使用自定义的data属性在HTML代码中指明绑定.所有绑定起来的 ...

  9. js 变量类型

    变量类型分为:基础类型和引用类型 基础类型:boolean, string, number, null, undefined, symbol 引用类型: array, object typeof: 判 ...

  10. 如何在vue中引入图片?

    当我们在Vue.js项目中引用图片时,关于图片路径有以下几种情形: 使用一. 我们在data里面定义好图片路径 imgUrl:'../assets/logo.png' 然后,在template模板里面 ...