玄机论坛-专业的C#交流论坛 交流QQ群: 16885911如有疑问,请加入官方群询问
您需要 登录 才可以下载或查看,没有帐号?关闭注册
x
C#多线程读取/写入Listview demo 玄机论坛 C#培训课程 番外篇之 C#多线程
http://www.xuanjics.com/thread-67-1-1.html
玄机论坛 C#培训课程 番外篇之 C#委托
http://www.xuanjics.com/thread-79-1-1.html[mw_shl_code=csharp,true]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 cc
{
public delegate void AddListViewItems(ListViewItem lvi);
public partial class Form1 : Form
{
AddListViewItems alvi;
public void InvokeAdd(ListViewItem lvi)
{
ThListView.Items.Add(lvi);
//解决跨线程问题
//this.Invoke(new ThreadStart(delegate
//{
// ThListView.Items.Add(lvi);
//}));
}
public Form1()
{
InitializeComponent();
}
private void btnAdd_Click(object sender, EventArgs e)
{
Thread th = new Thread(new ThreadStart(delegate
{
AddLvi();
}));
th.Start();
}
private void AddLvi()
{
for (int i = 0; i < 10; i++)
{
ListViewItem lvi = new ListViewItem();
lvi.Text = i.ToString();
lvi.SubItems.Add(Guid.NewGuid().ToString().Substring(4));
lvi.SubItems.Add(Guid.NewGuid().ToString().Substring(4));
// alvi(lvi);//调用委托 如果这里不用this.invoke调用,那么上面方法就必须要使用
this.Invoke(alvi, lvi);
Thread.Sleep(50);
}
}
private void Form1_Load(object sender, EventArgs e)
{
alvi = new AddListViewItems(InvokeAdd);//实例化委托
}
private void btnGet_Click(object sender, EventArgs e)
{
ThGet();
}
private void ThGet()
{
Thread th = new Thread(new ThreadStart(delegate {
for (int i = 0; i < ThListView.Items.Count; i++)
{
this.Invoke(new ThreadStart(delegate
{
//这样用this.invoke就相当于创建了一个委托
txtRes.AppendText(string.Format("{0} --- {1} --- {2} \r\n", ThListView.Items.Text, ThListView.Items.SubItems[1].Text, ThListView.Items.SubItems[2].Text));
}));
}
}));
th.Start();
}
}
}
[/mw_shl_code]
cc.zip
(1.67 MB, 下载次数: 4463)
|