C# Task 委托 Lambda 回调 示例

  • Post author:
  • Post category:其他


C# Task 委托 Lambda 回调 示例

因为微软针对于Thread的支援已经减弱,更提倡用户使用Task,所以针对于这部分结合委托回调进行记录

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp26
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public void show()
        {
            MessageBox.Show("End");
        }
        public void test(TextBox textBox, Action ac)
        {
            //实例化Task
            Task task = new Task(() =>
            {
                for (int i = 0; i < 50; i++)
                {
                    Thread.Sleep(100);
                    //Action 0-16个参数,没有返回值
                    Action action = new Action(() => { textBox.Text = i.ToString(); });
                    //在拥有此控件的线程上执行指定的委托
                    Invoke(action);
                }
                //执行委托,即回调某一个函数,因为被执行的函数不需要返回值,所以使用Action
                ac();
            });
            //启动Task
            task.Start();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            test(textBox1,new Action(show));
            Thread.Sleep(500);
            test(textBox2, new Action(show));
        }
    }
}

效果图



版权声明:本文为qq_46827462原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。