一个WinForm中的异步例子
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; namespace VS11 { public partial class FrmLogin : Form { public delegate void Action(); public FrmLogin() { InitializeComponent(); } private void btnLogin_Click(object sender, EventArgs e) { Action action = new Action(this.Login); action.BeginInvoke(null, null); } private void btnExit_Click(object sender, EventArgs e) { this.Close(); } private void Login() { this.btnLogin.Invoke(new Action(() => { this.btnLogin.Enabled = false; })); this.txtUserName.Invoke(new Action(() => { this.txtUserName.Enabled = false; })); this.txtPassWord.Invoke(new Action(() => { this.txtPassWord.Enabled = false; })); this.libMessage.Invoke(new Action(() => { this.libMessage.Text = "正在链接数据库..."; })); Thread.Sleep(1000); this.libMessage.Invoke(new Action(() => { this.libMessage.Text = "正在查询用户表..."; })); Thread.Sleep(1000); this.libMessage.Invoke(new Action(() => { this.libMessage.Text = "正在验证用户名..."; })); Thread.Sleep(1000); this.libMessage.Invoke(new Action(() => { this.libMessage.Text = "正在验证密码..."; })); Thread.Sleep(1000); this.libMessage.Invoke(new Action(() => { this.libMessage.Text = "用户登录成功..."; })); this.btnLogin.Invoke(new Action(() => { this.btnLogin.Enabled = true; })); this.txtUserName.Invoke(new Action(() => { this.txtUserName.Enabled = true; })); this.txtPassWord.Invoke(new Action(() => { this.txtPassWord.Enabled = true; })); } } }
欢迎来到:码农很忙 。