首页 > 其他分享 >案例3

案例3

时间:2024-07-14 14:34:17浏览次数:9  
标签:12 void 案例 Form1 线程 result HeavyJob

 1 public partial class Form1 : Form
 2     {
 3         public Form1()
 4         {
 5             InitializeComponent();
 6         }
 7 
 8         private void Form1_Load(object sender, EventArgs e)
 9         {
10 
11         }
12 
13         private void button1_Click(object sender, EventArgs e)
14         {
18             int result =  HeavyJob();
19             this.label1.Text = result.ToString();21         }
22 
23         int HeavyJob()
24         {
//模拟耗时操作,使用的是同步方式,阻塞了,所以导致界面卡顿 25 Thread.Sleep(2000); 26 return 12; 27 } 28 }
点击界面的button按钮,界面卡顿,知道2s后恢复

解决方式:使用异步

 1  public partial class Form1 : Form
 2     {
 3         public Form1()
 4         {
 5             InitializeComponent();
 6         }
 7 
 8         private void Form1_Load(object sender, EventArgs e)
 9         {
10 
11         }
12 
13         private async  void button1_Click(object sender, EventArgs e)
14         {
15             Console.WriteLine("当前线程:"+ Environment.CurrentManagedThreadId.ToString());
16             //ConfigureAwait(true) 任务结束后还回到原来的线程 ConfigureAwait(false) 不回到原来的线程 
//如果ConfigureAwait(false) 那么将会报错,System.InvalidOperationException:“线程间操作无效: 从不是创建控件“label1”的线程访问它
//因为等待结束后,线程没有回归到ui线程,非ui线程调用ui将会出错
17 int result = await HeavyJob().ConfigureAwait(true); 18 //int result = HeavyJob().Result; 19 this.label1.Text = result.ToString(); 20 Console.WriteLine("当前线程:" + Environment.CurrentManagedThreadId.ToString()); 21 } 22 23 async Task<int> HeavyJob() 24 { 25 await Task.Delay(6000); 26 return 12; 27 } 28 }

 

标签:12,void,案例,Form1,线程,result,HeavyJob
From: https://www.cnblogs.com/loki135846/p/18301513

相关文章

  • 死锁案例
    1publicpartialclassForm1:Form2{3publicForm1()4{5InitializeComponent();6}78privatevoidForm1_Load(objectsender,EventArgse)9{1011}1213private......
  • 【免费】Python数据分析最新87个项目案例,包含说明文档+数据+源码资料合集分享
    Python数据分析最新87个项目案例,包含说明文档+数据+源码。87个完整项目案例获取方式:https://pan.quark.cn/s/589d02b01ce5包含但不限于:“表迪杯“数据分析大赛已题学生校围消费行为分析【项目:深圳市二手房房价分析及预测】【项目:信用卡客户用户画像及贷款违约预测模型......
  • flask+mysql入门案例
    在Flask中集成MySQL数据库进行用户管理是一个常见的项目需求。下面将提供一个基础的步骤和代码示例来理解如何从零开始搭建这样一个系统。1.环境准备首先确保你已经安装了Python和必要的包。你需要安装Flask和用于连接MySQL的包Flask-SQLAlchemy或者Flask-M......
  • ASP.NET第七章 --案例1
    分两篇来分享一、简单的数据库操作1.登录SQLServer数据库2.新建查询3.代码部分如下createdatabaseSqlQuery1         --创建SqlQuery1数据库gouseSqlQuery1                    --操作SqlQuery1数据库gocreatetableUserT......
  • 分页查询及其拓展应用案例
    分页查询分页查询是处理大量数据时常用的技术,通过分页可以将数据分成多个小部分,方便用户逐页查看。SQLAlchemy提供了简单易用的方法来实现分页查询。本篇我们也会在最终实现这样的分页效果:1.什么是分页查询分页查询是将查询结果按照一定数量分成多页展示,每页显示固定数量的......
  • 【免费】stm32单片机、PCB资料合集,上千种项目案例+源码+说明文档,各种毕业设计论文项目
    stm32单片机、PCB资料合集,上千种项目案例+源码+说明文档,各种毕业设计论文项目参考资料等等。。获取方式:https://pan.quark.cn/s/9ceaffb46008包含但不限于:stm32项目开发资料合集stm32项目开发资料合集单片机资料毕设论文等基于单片机的七彩炫光心形灯设计基于单片机的数字......
  • 最新计算机专业开题报告案例28:基于Web的人事信息管理系统设计与实现
    计算机毕业设计100套微信小程序项目实战java项目实战需要源码可以滴滴我目录一、选题依据(一)研究目的和意义1.目的2.意义(二)国内外研究现状1.国外研究现状2.国内研究现状(三)学术准备情况(四)研究思路及方法1.研究思路2.研究方法二、结构框架(一)写作提纲(二)参考文献......
  • Python项目开发实战,掷硬币的连胜,案例教程编程实例课程详解
    在Python中进行实战项目,比如模拟掷硬币并记录连胜次数,是一个既有趣又能加深理解随机数生成、循环控制、条件判断等编程基础的好方法。下面,我将逐步引导你完成一个详细的Python项目,该项目将模拟掷硬币的过程,并追踪记录连胜的次数,同时我们会深入探讨一些编程概念,如函数封装、异常......
  • 【eNSP模拟实验】单臂路由实现VLAN间通讯(复杂案例)
    实验需求如下图所示,PC1和PC2在vlan10下,PC3和PC4在vlan20下,Server1在vlan30下,需要实现这5台设备之间互相通讯。实验操作配置各个终端的ip地址PC1~PC4都按照下图进行配置(注意ip地址和网关有不同的地方),注意配置好之后要点击右下角的应用Server1配置如图下所示,配置好之后,点......
  • 迪米特法则:电子商务库存管理应用案例,并不属于过度设计
    迪米特法则(LawofDemeter,LoD)是一种软件设计原则,它要求一个对象应该对其他对象有最少的了解,只与直接的朋友(即直接的依赖关系)交互。肖哥弹架构跟大家“弹弹”代码设计技巧,需要代码关注欢迎点赞,点赞,点赞。关注公号Solomon肖哥弹架构获取更多精彩内容历史热点文章......