C# 多线程

private void button1_Click(object sender, EventArgs e)

{

//thread.sleep 阻碍当前线程

Thread.Sleep(3000);

MessageBox.Show("素菜做好了");

Thread.Sleep(5000);

MessageBox.Show("荤菜做好了");

}

private void button2_Click(object sender, EventArgs e)

{

//多线程

Thread t = new Thread(() =>

{

Thread.Sleep(3000);

MessageBox.Show("素菜做好了");

Thread.Sleep(5000);

MessageBox.Show("荤菜做好了");

});

t.Start();

}

private void button3_Click(object sender, EventArgs e)

{

//推荐使用task

Task.Run(() =>

{

Thread.Sleep(3000);

MessageBox.Show("素菜做好了");

Thread.Sleep(5000);

MessageBox.Show("荤菜做好了");

});

}

private void button4_Click(object sender, EventArgs e)

{

//同时并行运行的,利用cpu 多核的原理

Task.Run(() =>

{

Thread.Sleep(3000);

MessageBox.Show("素菜做好了");

});

Task.Run(() =>

{

Thread.Sleep(5000);

MessageBox.Show("荤菜做好了");

});

}

private async void button5_Click(object sender, EventArgs e)

{

//等待菜做好了,才打印菜做好了,大家快来吃饭。

await Task.Run(() =>

{

Thread.Sleep(3000);

MessageBox.Show("素菜做好了");

Thread.Sleep(5000);

MessageBox.Show("荤菜做好了");

});

MessageBox.Show("菜做好了,大家快来吃饭。");

}

private async void button6_Click(object sender, EventArgs e)

{

//当素材做好了,才开始做荤菜,这不是并行的了。

await Task.Run(() =>

{

Thread.Sleep(3000);

MessageBox.Show("素菜做好了");

});

await Task.Run(() =>

{

Thread.Sleep(5000);

MessageBox.Show("荤菜做好了");

});

MessageBox.Show("菜做好了,大家快来吃饭。");

}

private void button7_Click(object sender, EventArgs e)

{

List<Task> ts = new List<Task>();

//这样做又是并行的了。

ts.Add(Task.Run(() =>

{

Thread.Sleep(3000);

MessageBox.Show("素菜做好了");

}));

ts.Add(Task.Run(() =>

{

Thread.Sleep(5000);

MessageBox.Show("荤菜做好了");

}));

Task.WhenAll(ts).ContinueWith(t =>

{

MessageBox.Show("菜做好了,大家快来吃饭。");

});

}

相关推荐
大飞pkz2 小时前
【设计模式】题目小练2
开发语言·设计模式·c#·题目小练
csdn_aspnet4 小时前
MongoDB C# .NetCore 驱动程序 序列化忽略属性
mongodb·c#·.netcore
浪扼飞舟4 小时前
c#基础二(类和对象,构造器调用顺序、访问级别、重写和多态、抽象类和接口)
java·开发语言·c#
好望角雾眠8 小时前
第四阶段C#通讯开发-1:通讯基础理论,串口,通讯模式,单位转换,代码示例
开发语言·笔记·c#·串口·通讯
薄荷撞~可乐15 小时前
C#Task(Api)应用
开发语言·c#
almighty2720 小时前
C#WPF控制USB摄像头参数:曝光、白平衡等高级设置完全指南
开发语言·c#·wpf·usb相机·参数设置
后青春期的诗go21 小时前
金蝶云星空插件开发记录(一)
c#·钉钉·金蝶云星空·插件开发
大飞pkz1 天前
【设计模式】题目小练1
开发语言·设计模式·c#·题目小练
lljss20201 天前
C# 每个chartArea显示最小值、平均值、最大值
开发语言·c#
wearegogog1231 天前
C#与Twincat 2 实现上位机控制软PLC功能
开发语言·c#