你的位置:首页 > ASP.net教程

[ASP.net教程][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