首页 > 技术文章 > .net 4.5 Test Async Task 异步测试

wgscd 2019-07-12 17:26 原文

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>

  

 

 

推荐阅读