您的位置:首页 > 编程语言 > C#

C#中的BackgroundWorker控件+Delegate.Invoke (委托同步调用)

2015-09-08 15:33 417 查看
C#中的BackgroundWorker控件+Delegate.Invoke (委托同步调用)

简单代码,记录一下。一个BackgroundWorker控件 backgroundWorkerRefresh +listview控件

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 CallCenter
{
public partial class MainFrm : Form
{
public bool isStart = false;
public MainFrm()
{
InitializeComponent();
RefreshDisp();
}
private void RefreshDisp()
{
lv.Items.Clear();

for (int i = 0; i < 8; i++)
{
ListViewItem lvitem = new ListViewItem();
lvitem.SubItems[0].Text = i.ToString();
lvitem.SubItems.Add("项目编号" + i.ToString());
lvitem.SubItems.Add("项目名称" + i.ToString());
lvitem.SubItems.Add("项目负责人" + i.ToString());
lvitem.SubItems.Add("项目年度-" + i.ToString());
lvitem.SubItems.Add(DateTime.Now.ToString() + " -" + i.ToString());
lvitem.SubItems.Add(" #" + i.ToString());
lv.Items.Add(lvitem);
}

}
private void RefreshDispCH(int ch)
{

L_Status.Text = lv.Items[ch].SubItems[6].Text;
lv.Items[ch].SubItems[6].Text = "test";
for (int i = 0; i < 7; i++)
{
lv.Items[ch].SubItems[i].Text = DateTime.Now.ToString() + " -" + i.ToString();
}

}

public delegate void D_RefreshDisp();
public delegate void D_RefreshDispCH(int ch);

private void backgroundWorkerRefresh_DoWork(object sender, DoWorkEventArgs e)
{
do
{
// this.Invoke(new D_RefreshDisp(RefreshDisp));

Thread.Sleep(1000);
this.Invoke(new D_RefreshDispCH(RefreshDispCH), 3);
} while (isStart);

}

private void backgroundWorkerRefresh_ProgressChanged(object sender, ProgressChangedEventArgs e)
{

}

private void Startbutton_Click(object sender, EventArgs e)
{
Startbutton.Enabled = false;
isStart = true;
backgroundWorkerRefresh.RunWorkerAsync();

}
}
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: