zoukankan      html  css  js  c++  java
  • C#执行异步操作的几种方式

    //线程异步按钮

    private void ThreadButton_Click(object sender, RoutedEventArgs e)
    {
    new Thread(o =>
    {
    var time = TestTask();
    Dispatcher.BeginInvoke(DispatcherPriority.Normal,
    new Action<Button, int>(OutputInfo), sender as Button, time);
    })
    { IsBackground = true }
    .Start();
    }

    //线程池异步按钮

    private void ThreadPoolButton_Click(object sender, RoutedEventArgs e)
    {
    ThreadPool.QueueUserWorkItem(s =>
    {
    var time = TestTask();
    Dispatcher.BeginInvoke(DispatcherPriority.Normal,
    new Action<Button, int>(OutputInfo), sender as Button, time);
    });
    }

    //Task异步按钮

    private void TaskButton_Click(object sender, RoutedEventArgs e)
    {
    var t = new Task<int>(TestTask);
    t.ContinueWith(p =>
    {
    Dispatcher.BeginInvoke(DispatcherPriority.Normal,
    new Action<Button, int>(OutputInfo), sender as Button, p.Result);
    });
    t.Start();
    }

    //await异步按钮

    private async void AwaitButton_Click(object sender, RoutedEventArgs e)
    {
    Task<int> t = new Task<int>(TestTask);
    t.Start();
    var time = await t;
    OutputInfo(sender as Button, time);
    //var time = await TestTaskAsync();
    //OutputInfo(sender as Button, time);
    }

    //线程异步性能测试

    private void ThreadTest_Click(object sender, RoutedEventArgs e)
    {
    var time = AsyncTest(new Action(() => ThreadButton_Click(ThreadButton, null)));
    ShowTestResult(sender, time);
    }

    //线程池异步性能测试

    private void ThreadPoolTest_Click(object sender, RoutedEventArgs e)
    {
    var time = AsyncTest(new Action(() => ThreadPoolButton_Click(ThreadPoolButton, null)));
    ShowTestResult(sender, time);
    }

    //Task异步性能测试

    private void TaskTest_Click(object sender, RoutedEventArgs e)
    {
    var time = AsyncTest(new Action(()=> TaskButton_Click(TaskButton, null)));
    ShowTestResult(sender, time);
    }

    //await异步性能测试

    private void AwaitTest_Click(object sender, RoutedEventArgs e)
    {
    var time = AsyncTest(new Action(() => AwaitButton_Click(AwaitButton,null)));
    ShowTestResult(sender, time);
    }
  • 相关阅读:
    日志组件一:Log4j
    HTTPS加密那点事--轻松秒懂HTTPS非对称加密
    图解Git
    Python 迭代器 & __iter__方法
    Fiddler 抓包工具总结
    Python使用struct处理二进制(pack和unpack用法)
    Python binascii
    常见证书格式及相互转换
    MyBatis Generator 详解
    MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
  • 原文地址:https://www.cnblogs.com/fyy1003668657/p/10839004.html
Copyright © 2011-2022 走看看