.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>
fffffffffffffffff
test red font.

浙公网安备 33010602011771号