一个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; }));
        }
    }
}

  

posted @ 2012-03-31 21:58  Soar、毅  阅读(710)  评论(0编辑  收藏  举报