首页 > 代码库 > [C#] 在 GUI 中执行异步操作
[C#] 在 GUI 中执行异步操作
在 GUI 中执行异步操作
序
目录
一、在 GUI 程序中执行异步操作
下面通过窗体示例演示以下操作-点击按钮后:①将标签内容改成:“Doing”,并将按钮禁用(表示执行中);②线程挂起3秒(模拟耗时操作);③将标签内容改为:“Complete”,并启用按钮(表示执行完成);
1 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 } 7 8 private void btnDo_Click(object sender, EventArgs e) 9 {10 btnDo.Enabled = false;11 lblText.Text = @"Doing";12 13 Thread.Sleep(3000);14 15 btnDo.Enabled = true;16 lblText.Text = @"Complete";17 }18 }
可是执行结果却是:
图1-1
发现的问题:好像没有变成“Doing”,并且拖到窗口的时候卡住不动了,3秒后突然变到想拖动到的位置,并且文本变成“Complete”?
【分析】GUI 程序在设计中要求所有的显示变化都必须在主 GUI 线程中完成,如点击事件和移动窗体。Windows 程序时通过 消息来实现,消息放入消息泵管理的消息队列中。
图1-2 点击事件
图1-3 点击事件具体执行过程
【原文地址】http://www.cnblogs.com/liqingwen/p/5877042.html
[C#] 在 GUI 中执行异步操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。