C# 实现两个或多个线程交替执行

在这里,我用的是一个winfrom窗体,以控制台输出,核心代码如下
public partial class Form1 : Form
{//转载请保留 http://www.luofenming.com/show.aspx?id=ART2020060100001
    public Form1()
    {
        InitializeComponent();
    }
    //定义三个信号量对三个线程进行控制
    static AutoResetEvent AautoResetEvent = new AutoResetEvent(false)
    static AutoResetEvent BautoResetEvent = new AutoResetEvent(false)
    static AutoResetEvent CautoResetEvent = new AutoResetEvent(false)
    static void ShowA()
    {
        for (int i = 0; i < 10; i++)
        {
            AautoResetEvent.WaitOne();//阻塞 等待信号
            Console.Write("A");
            BautoResetEvent.Set();//设置ShowB 信号量有信号 则放开阻塞往下执行ShowB
        }
    }
    static void ShowB()
    {
        for (int i = 0; i < 10; i++)
        {
            BautoResetEvent.WaitOne();
            Console.Write("B");
            CautoResetEvent.Set();
        }
    }
    static void ShowC()
    {
        for (int i = 0; i < 10; i++)
        {
            CautoResetEvent.WaitOne();
            Console.Write("C");
            AautoResetEvent.Set();
        }
    }
    /// <summary>
    /// 执行三个线程
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button1_Click(object sender, EventArgs e)
    {
        new Action(ShowA).BeginInvoke(null, null);
        new Action(ShowB).BeginInvoke(null, null);
        new Action(ShowC).BeginInvoke(null, null);
        AautoResetEvent.Set();//设置ShowA 信号量有信号  则放开阻塞往下执行ShowA
        //最终输出结果ABCABCABCABCABCABCABCABCABCABC
    }
}

评论