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

});

}

相关推荐
tang_042710 小时前
【Hi.Ltd 专题】第7期:Threading 采集线程、锁与 LRU 缓存
经验分享·c#·hi.ltd系列
A_nanda10 小时前
C# 界面卡顿:从定位到根治
c#
2501_9307077811 小时前
使用C#代码为新创建的 Word 文档创建目录
c#·word
czhc114007566313 小时前
同一个数,两把尺子:六组“看着一样、其实不一样“
c#
花北城13 小时前
【C#底层库】access_token授权鉴权验证
c#·鉴权·token·授权
rick97714 小时前
C# 动态代理与 DispatchProxy:从原理到实战的完整指南
c#
tang_042714 小时前
【Hi.Ltd 专题】第8期:Managements 插件、单例与服务定位
经验分享·c#·hi.ltd系列
曹牧1 天前
C#:24小时制时间
c#
唐青枫1 天前
别急着拆服务:C#.NET 微服务架构从边界设计到实战
c#·.net
czhc11400756631 天前
从一份运行日志还原一次生产卡死:三个信号与一场“假卡死“
c#