c# 委托访问listbox多线程操作

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Threading;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        delegate void SendToParent(string txt);
       // public delegate string SendToParent();
        mysqlConnect conn = new mysqlConnect();
        DataTable dt = new DataTable();
        time tm = new time();
        private void Form1_Load(object sender, EventArgs e)
        {
          
            conn.getConnection();
          
        }
        private void ConnServer()
        {
            SendToParent stc = new SendToParent(ConnServerRes);
            SendToParent lb = new SendToParent(lbtext);
            //线程的相关操作
            this.Invoke(lb, new object[] { "获取用户名...." });
            DataTable dm = conn.executeQuery("select * from bbsmember");
            string[] meber=new string[dm.Rows.Count];
           
            for (int i = 0; i < dm.Rows.Count; i++)
            {
                meber[i] = dm.Rows[i]["username"].ToString();
           
            }
            this.Invoke(lb, new object[] { "等待插入...." });
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string title = dt.Rows[i]["标题"].ToString();
                string text = dt.Rows[i]["内容"].ToString();
                //string pic = dt.Rows[i]["pic"].ToString();
                int dy = DateTime.Now.Day + 1;
                string year = DateTime.Now.Year.ToString();
                string m = DateTime.Now.Month.ToString().PadLeft(2, '0');
                string s = DateTime.Now.Second.ToString().PadLeft(2, '0');
              
                string date = DateTime.Now.Year.ToString() + "/"+DateTime.Now.Month.ToString().PadLeft(2,'0')+"/"+dy.ToString();
                Random rd = new Random();
                string h = rd.Next(0, 23).ToString().PadLeft(2, '0');
                string min = rd.Next(0, 59).ToString().PadLeft(2, '0');
                string tpdate = year+m+dy+h+min+s;
                string view = rd.Next(20,30).ToString();
                string i_id = "50_" + rd.Next(1,3).ToString() + "0";
                int j = rd.Next(1,37);
                string author_ip = meber[j];
                string sql = "insert  into bbslistdata(title,text,date,reply,views,author_ip,topdate,area_id) values ('" + title + "','" + text + "','" + date + "',0,'" + view + "','" + author_ip + "','" + tpdate + "','" + i_id + "')";
                if (conn.executeUpdate(sql) == true)
                {
                    this.Invoke(stc, new object[] { "插入成功" });
                }

}
            this.Invoke(lb, new object[] { "插入完毕" });
           
        }
        private void ConnServerRes(string str)
        {
            //操作主线程中的控件
            listBox1.Items.Add(str);
        }
        private void lbtext(string str)
        {
            //操作主线程中的控件
            label1.Text=str;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            string sql = "select * from data_content_1  order by ID ASC limit 50";
             dt = conn.executeQuery(sql);
            dataGrid1.DataSource = dt;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Thread connThread = new Thread(ConnServer);
            //connThread = new Thread(new ThreadStart(ConnServer));
            connThread.IsBackground = true;
            connThread.Start();

}
    }
}

c# 委托访问listbox多线程操作的更多相关文章

  1. C# 多线程操作之异步委托

    标签: 多线程任务nullstringhtml工作 2012-06-29 23:00 1276人阅读 评论(0) 收藏 举报  分类: C/C++/C#/dotnet(126)    目录(?)[+] ...

  2. 用委托在listbox中异步显示信息,解决线程间操作无效,从不是创建控件的线程访问它

    //创建一个委托,是为访问listbox控件服务的. public delegate void UpdateTxt(string msg); //定义一个委托变量 public UpdateTxt u ...

  3. 多线程操作(循环往listbox中添加数据)

    一.先造一个窗体,其中就开始按钮,暂停按钮,以及listbox文本框 二.当点击开始的时候,数据会无限的往listbox中加,为了防止卡住和提升效率,便造了一个新的线程来执行开始操作 namespac ...

  4. C#多线程操作界面控件的解决方案(转)

    C#中利用委托实现多线程跨线程操作 - 张小鱼 2010-10-22 08:38 在使用VS2005的时候,如果你从非创建这个控件的线程中访问这个控件或者操作这个控件的话就会抛出这个异常.这是微软为了 ...

  5. C#中级-常用多线程操作(持续更新)

    一.前言       多线程操作一直是编程的常用操作,掌握好基本的操作可以让程序运行的更加有效.本文不求大而全,只是将我自己工作中常常用到的多线程操作做个分类和总结.平时记性不好的时候还能看看.本文参 ...

  6. C# winform编程中多线程操作控件方法

    private void Form1_Load(object sender, EventArgs e) { Thread newthread = new Thread(new ThreadStart( ...

  7. c# Winform 多线程操作

    主要是对一个过程需要的时间很长执行时会出现界面假死的情况 方法1: Application.DoEvents(),这种方法当你拖动窗体时,界面不会假死.但在你拖动时代码不再执行,也就是阻塞了,当你不再 ...

  8. DataTable多线程操作报错情况

    最近在写一个http接口时用了DataTable这个强大的利器,接口用浏览器跑起来没任何问题.当时也没考虑并发问题,后来用一个压力测试工具做大并发测试,1000+/s次速度测试.发现程序报错了.程序报 ...

  9. python threading模块使用 以及python多线程操作的实践(使用Queue队列模块)

    今天花了近乎一天的时间研究python关于多线程的问题,查看了大量源码 自己也实践了一个生产消费者模型,所以把一天的收获总结一下. 由于GIL(Global Interpreter Lock)锁的关系 ...

随机推荐

  1. NOIP2012摆花

    题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆.通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花,从 1 到 n 标号.为了在门口展出更多种花,规定第 i 种花不 ...

  2. Composer安装(windows)

    https://files.cnblogs.com/files/wlphp/Composer-Setup.zip 先下载这个安装包,一直下一步 然后设置composer全局中国景象 composer ...

  3. - description 方法作用

    自定义一个Person类 @interface Person : NSObject { int _age; double _height; double _weight; NSString *_nam ...

  4. python pipelines 用法

    http://zacstewart.com/2014/08/05/pipelines-of-featureunions-of-pipelines.html http://blog.csdn.net/m ...

  5. Python ---- super()使用

    Python ---- super() 我们经常在类的继承当中使用super(), 来调用父类中的方法.例如下面: 1 2 3 4 5 6 7 8 9 10 11 12 13 class A:     ...

  6. App测试从入门到精通之性能测试

    好了,上节我们介绍了关于APP测试的功能测试方面一些细节.这一篇我们来介绍一下,关于APP测试过程中的性能测试参考要点,我们需要思考的如下: 响应时间 1.APP安装卸载的响应时间 2.APP各种功能 ...

  7. HDU 3362 Fix (状压DP)

    题意:题目给出n(n <= 18)个点的二维坐标,并说明某些点是被固定了的,其余则没固定,要求添加一些边,使得还没被固定的点变成固定的, 要求总长度最短. 析:由于这个 n 最大才是18,比较小 ...

  8. java代码实现顺序队列

    java实现顺序队列 package xianxinTable; import java.util.ArrayList; import java.util.Iterator; import com.s ...

  9. DataType--时间类型

    SQL SERVER 存储时间的方式和存放浮点数的方式类似,存放时按照一定公式算出一个数值,存放到页面,在读取时按照公式求算出时间值,再按照默认或指定的时间格式展示给用户. 如果存放DATETIME数 ...

  10. 微信第三方平台开头篇--MVC代码(第三方获取ticket和公众号授权)

    微信公众号授权给开放平台 公众号授权给第三方平台的技术实现流程比较简单 这个步骤遗漏了开头获取第三方平台自己的accessToken 先说下流程 如何注册开放平台的第三方信息看截图 其他不说了,此文只 ...