码迷,mamicode.com
首页 > Windows程序 > 详细

[C#] 在 GUI 中执行异步操作

时间:2016-09-17 08:20:19      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

在 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 中执行异步操作

标签:

原文地址:http://www.cnblogs.com/liqingwen/p/5877042.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!