后台更新UI界面
用c#做winForm,一个字“很慢”,大都数人都在叫BILL骂dotNet框架,我没骂,但埋怨过,有网友说过,MS是大哥,大哥没有错,
有错也是我们的错。其实主要还是我们的开发功夫没到家,UI界面处理上没有把握好,很多时候打开窗体出现假死机现象,间接影响
了中国的国民收入,原因就不说了,也说不完的。
这篇文章的出生,主要因昨晚偶和BackgroundWorker组件的懈逅,在webcast上知道有这个组件,经过数分钟的众里寻它千百度,没
错,我用的是百度,终于把它一层层华丽的衣裳剥去,只剩下DoWork和RunWorkerCompleted两个中心(事件),
WorkerSupportCancellation 一个基本点(属性)
让我们开始用艺术的眼光欣赏了
第一步:
把它请到我们的窗体上
第二步:
轻轻点击它的两个中心,生成两个事件方法
第三步:
设置WorkerSupportCancellation为true,不true就不是重点了啊。
老毛说过,没有实践就没有发言权,接下来是时候动手了,用代码说话吧!
public partial class Form1 : Form
{
private DataTable dt;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
dt = db.getDT("server=(local);database=test;uid=sa;pwd=", "select top 10 * from tbl");
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
dataGridView1.DataSource = dt.DefaultView;
}
}