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

});

}

相关推荐
唐青枫3 小时前
C#.NET ReaderWriterLockSlim 深入解析:读写锁原理、升级锁与使用边界
c#·.net
ghie909013 小时前
C# WinForms 条形码生成器(含保存和打印预览功能)
开发语言·c#
蒙塔基的钢蛋儿13 小时前
告别内存泄露与空指针:用C#与.NET 10开启STM32H7高性能单片机开发新纪元
stm32·c#·.net
ZoeJoy813 小时前
C# Windows Forms 学生成绩管理器(StudentGradeManager)—— 方法重载、out、ref、params 参数示例
开发语言·c#
solicitous14 小时前
历史与术语
学习·c#
第二只羽毛14 小时前
第三章 栈,队列和数组
大数据·数据结构·c#
biuba102414 小时前
18 openclaw事务管理:确保数据一致性的最佳实践
开发语言·ai·c#·编程·技术
fengfuyao98514 小时前
C# 高仿QQ截图工具(支持自定义快捷键)
开发语言·c#
时光追逐者15 小时前
一款基于 .NET 开源、跨平台应用程序自动升级组件
c#·.net·.net core
啸啸说15 小时前
1.图像的加载与保存
opencv·c#