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 版权协议,转载请附上原文出处链接和本声明。