1.运行效果

2.代码
using System;
using System.Threading;
using System.Windows.Forms;
namespace 线程试验
{
public partial class Form1 : Form
{
int index1 = 0;
int index2 = 0;
SynchronizationContext SyncContext = null;
Thread thread1;
Thread thread2;
public Form1()
{
InitializeComponent();
SyncContext = SynchronizationContext.Current;
thread1 = new Thread(fun1);
thread2 = new Thread(fun2);
thread1.Start();
thread2.Start();
}
private void fun1()
{
while(true)
{
Thread.Sleep(200);
SyncContext.Post(postFun1, index1++);
}
}
private void fun2()
{
while (true)
{
Thread.Sleep(200);
SyncContext.Post(postFun2, index2++);
}
}
private void postFun1(object o)
{
label1.Text = o.ToString();
}
private void postFun2(object o)
{
label2.Text = o.ToString();
}
/// <summary>
/// 线程1挂起
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
thread1.Suspend();
}
/// <summary>
/// 线程2挂起
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
thread1.Resume();
}
/// <summary>
/// 线程2挂起
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
thread2.Suspend();
}
/// <summary>
/// 线程2挂起
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{
thread2.Resume();
}
}
}