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);
    }
  • 相关阅读:
    Android数据存储之File
    Openfiler使用说明
    nginx的upstream目前支持5种方式的分配
    centOS 6.5关闭防火墙步骤
    yum下载文件的存放位置
    ubuntu如何开启root,如何启用Ubuntu中root帐号
    ubuntu下的apt-get内网本地源的搭建
    [转]StarWind模拟iSCSI设备
    ORACLE删除某用户下所有对象
    [转]oracle导入提示“IMP-00010:不是有效的导出文件,头部验证失败”的解决方案
  • 原文地址:https://www.cnblogs.com/fyy1003668657/p/10839004.html
Copyright © 2011-2022 走看看