SynchronizationContext 是.net提供的一套线程同步上下文其中有两个方法实现把委托同步到线程
1.Post(异步)
2.Send(同步)
对Windows窗口消息熟悉的同学应该明白了
其函数特性类似于 SendMessage 和 PostMessage
Post 为异步 提交了就不管了什么时候完成什么时候算
Send为同步 直到委托执行完毕才会返回
Test Winform Code
新建窗体 放一个 button 一个 listbox
using System;
using System.Threading;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
private SynchronizationContext Context { get; set; };
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Context = SynchronizationContext.Current;
Thread t = new Thread(hTest);
t.IsBackground = true;
t.Start();
}
private void hTest(Object p)
{
for (int i = 0; i < 100; i++)
{
Context.Post((e)=>
{
listBox1.Items.Add(e);
},i);
}
}
}
}