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);
    }
  • 相关阅读:
    springsecurity 注解开发
    springsecurity 授权
    【ElasticSearch】集群搭建
    【CentOS7.9】防火墙配置使用
    【CentOS7.9】创建及挂载共享文件夹
    查看Linux发行版
    【Spring Cloud】spring-cloud2020和spring-cloud-alibaba2021问题记录
    【Spring Cloud】spring.factories
    三剑客-----grep
    git安装
  • 原文地址:https://www.cnblogs.com/fyy1003668657/p/10839004.html
Copyright © 2011-2022 走看看