c# 委托访问listbox多线程操作
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多线程操作的更多相关文章
- C# 多线程操作之异步委托
标签: 多线程任务nullstringhtml工作 2012-06-29 23:00 1276人阅读 评论(0) 收藏 举报 分类: C/C++/C#/dotnet(126) 目录(?)[+] ...
- 用委托在listbox中异步显示信息,解决线程间操作无效,从不是创建控件的线程访问它
//创建一个委托,是为访问listbox控件服务的. public delegate void UpdateTxt(string msg); //定义一个委托变量 public UpdateTxt u ...
- 多线程操作(循环往listbox中添加数据)
一.先造一个窗体,其中就开始按钮,暂停按钮,以及listbox文本框 二.当点击开始的时候,数据会无限的往listbox中加,为了防止卡住和提升效率,便造了一个新的线程来执行开始操作 namespac ...
- C#多线程操作界面控件的解决方案(转)
C#中利用委托实现多线程跨线程操作 - 张小鱼 2010-10-22 08:38 在使用VS2005的时候,如果你从非创建这个控件的线程中访问这个控件或者操作这个控件的话就会抛出这个异常.这是微软为了 ...
- C#中级-常用多线程操作(持续更新)
一.前言 多线程操作一直是编程的常用操作,掌握好基本的操作可以让程序运行的更加有效.本文不求大而全,只是将我自己工作中常常用到的多线程操作做个分类和总结.平时记性不好的时候还能看看.本文参 ...
- C# winform编程中多线程操作控件方法
private void Form1_Load(object sender, EventArgs e) { Thread newthread = new Thread(new ThreadStart( ...
- c# Winform 多线程操作
主要是对一个过程需要的时间很长执行时会出现界面假死的情况 方法1: Application.DoEvents(),这种方法当你拖动窗体时,界面不会假死.但在你拖动时代码不再执行,也就是阻塞了,当你不再 ...
- DataTable多线程操作报错情况
最近在写一个http接口时用了DataTable这个强大的利器,接口用浏览器跑起来没任何问题.当时也没考虑并发问题,后来用一个压力测试工具做大并发测试,1000+/s次速度测试.发现程序报错了.程序报 ...
- python threading模块使用 以及python多线程操作的实践(使用Queue队列模块)
今天花了近乎一天的时间研究python关于多线程的问题,查看了大量源码 自己也实践了一个生产消费者模型,所以把一天的收获总结一下. 由于GIL(Global Interpreter Lock)锁的关系 ...
随机推荐
- axure可用密钥
axure8.0注册码 激活码:(亲测可用) 用户名:aaa 注册码:2GQrt5XHYY7SBK/4b22Gm4Dh8alaR0/0k3gEN5h7FkVPIn8oG3uphlOeytIajxG ...
- solr开发之基本操作
package zr.com.util; import java.io.IOException; import java.util.List; import java.util.Map; import ...
- jquery dropdownlist.js
$.fn.extend({ SetDict: function (option) { var txtControl = $(this); if (!txtControl.hasClass(" ...
- 《the art of software testing》 第三章 人工测试
在深入研究较为传统的计算机测试技术之前,要先进行"人工测试". 代码检查与走查是两种主要的人工测试方法. 代码检查与走查是对过去桌面检查过程(在提交测试前由程序员阅读自己程序的过程 ...
- Linq to SQL Like Operator
As a response for customer's question, I decided to write about using Like Operator in Linq to SQL q ...
- MongoDB整理笔记のSharding分片
这是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在sharding 的各个节点上,使用者通过简单的配置就可以很方便地构建一个分布式MongoDB 集群.MongoDB 的数据分块称为 chu ...
- html5标签兼容低版本浏览器
随着html5(后面用h5代表)标签越来越广泛的使用,IE不识别h5标签的问题让人很是烦恼. 在火狐和chrome之类的浏览器中,遇到不认识的标签,只要给个display:block属性,就能让这个元 ...
- Android Canvas的save(),saveLayer()和restore()浅谈
save() saveLayer() restore() 1.在自定义控件当中你onMeasure和onLayout的工作做完成以后就该绘制该控件了,有时候需要自己在控件上添加一些修饰来满足需求 ...
- Microsoft.Office.Interop.Word.DocumentClass.SaveAs 命令失败
asp.net 常用的生成word功能,代码也是网上常见的,自己本地反复测试过没问题.serves 2003下运行没问题,可是发布到2008上就出错.组件权限已配置,windows目录下temp权限已 ...
- javascript framework js常用框架
js常用框架 一.node.js 二.angularjs.js 三.react.js 四.webpack.js 五.flux.js 六.vue.js 七.bootstrap ...