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

});

}

相关推荐
1314lay_10077 小时前
C# 点击一次api,限流中间件但是X-Rate-Limit-Remaining剩余数量减少2
visualstudio·c#
“抚琴”的人8 小时前
C#上位机工厂模式
开发语言·c#
工程师00711 小时前
C#中的AutoUpdater自动更新类
开发语言·c#·自动更新开源库·autoupdate
曹牧12 小时前
C#:Obsolete
开发语言·c#
我是苏苏12 小时前
Web开发:使用C#的System.Drawing.Common将png图片转化为icon图片
开发语言·c#
阿蒙Amon12 小时前
C#每日面试题-is和as的区别
java·开发语言·c#
阿蒙Amon13 小时前
C#每日面试题-简述泛型约束
java·开发语言·c#
1314lay_100714 小时前
C# .Net 7.0 Core添加日志可视化
visualstudio·c#·.net·.netcore
gc_229915 小时前
学习C#调用OpenXml操作word文档的基本用法(17:学习文档图片类)
c#·word·图片·openxml
LcVong16 小时前
C# 基于MemoryMappedFile实现进程间通信(服务端+客户端完整范例)
linux·服务器·c#