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("菜做好了,大家快来吃饭。");

});

}

相关推荐
吴可可1231 天前
多段线局部约束缩放实现
c#
棉晗榜1 天前
C# HttpClient配置具有tls指纹发起跟浏览器一样的请求解决反爬虫防护
开发语言·爬虫·c#
吴可可1231 天前
在CAD中点击添加多段线顶点的方法与实现
c#
全栈小51 天前
【C#】.net core,静态方法线程安全解析,面试时经常被问的线程安全就藏在里面
安全·c#·.netcore
天下无敌笨笨熊1 天前
C#视频开发心得
开发语言·c#·音视频
LccKyI1 天前
C#基础编程 面试题汇总(三)
笔记·c#
半亩码田1 天前
C#转Python第4.1篇:当 try-catch 遇上 try-except:异常处理的大不同
开发语言·python·c#
z落落1 天前
C# Modbus-RTU 串口读写设备+CRC16+邮件告警
开发语言·c#
DS随心转小程序1 天前
Gemini只能导出了一部分Word文档,很少的一部分,不是我这个窗口所有的对话内容?
开发语言·人工智能·c#·word·豆包·deepseek·ai导出鸭
格林威1 天前
C# 相机图像配合频闪光源:实现高速稳定拍摄的几个方法
开发语言·网络·人工智能·数码相机·计算机视觉·c#·视觉检测