C#论坛-玄机论坛-C#论坛-玄机宝盒-玄机类库-C#

 找回密码
 关闭注册

QQ登录

只需一步,快速开始

查看: 4714|回复: 5

[剑走偏锋] C#多线程读取/写入Listview demo

[复制链接]
君临 发表于 2014-11-27 12:28:08 | 显示全部楼层 |阅读模式

玄机论坛-专业的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)
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

baige0428 发表于 2014-11-27 13:35:54 | 显示全部楼层
顶起来.又学到了
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

老段啦 发表于 2014-11-27 14:53:58 | 显示全部楼层
解决大问题了   
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

老段啦 发表于 2014-11-27 15:35:45 | 显示全部楼层
get那块用的太神乎  晚上回去再看遍多线程和委托....
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

style 发表于 2016-12-28 17:58:10 | 显示全部楼层
感谢分享~
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

jacksonwong 发表于 2019-5-22 17:43:38 | 显示全部楼层
谢谢分享!
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 关闭注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

QQ|玄机论坛

GMT+8, 2024-3-29 09:47 , Processed in 0.235975 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表