首页 > 代码库 > [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 中执行异步操作