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)锁的关系 ...
随机推荐
- solr开发 小案例
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" ...
- openpyxl模块处理excel文件
python模块之——openpyxl 处理xlsx/ xlsm文件 项目原因需要编辑excel文件,经过查询,最先尝试xlwt .wlrd这个两个模块,但是很快发现这两个模块只能编辑xls文件,然而 ...
- python3--列表生成式
# Auther: Aaron Fan # 原始的写法:a = []for i in range(10): a.append(i*2)print(a) # 用列表生成式完成上面的写法:a = [i*2 ...
- HDU 6047 Maximum Sequence (贪心+单调队列)
题意:给定一个序列,让你构造出一个序列,满足条件,且最大.条件是 选取一个ai <= max{a[b[j], j]-j} 析:贪心,贪心策略就是先尽量产生大的,所以就是对于B序列尽量从头开始,由 ...
- java IO Nio 文件拷贝工具类Files
public static void main(String[] args) throws Exception { Files.copy(Paths.get("file/text.txt&q ...
- Graph cut使用方法
下载:http://www.wisdom.weizmann.ac.il/~bagon/matlab.html 1. 运行compile_gc.m 2.运行gc_example.m(必须同目录吗?!) ...
- delphi Post数据到网页
var http: TIdHttp; sendtoserver: TStringStream; str: string; begin http := TIdHttp.Create(); // 创建 h ...
- Sublime Text 2插件推荐
必装Package Control 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码: import urllib2,os; pf='Package ...
- 中国城市 json
点击查看完整代码,再点击复制即可复制代码. 三级json,省市区: [{ "value": "110000", "text": " ...
- SpringMVC+Hibernate 使用 session.update(obj) 未更新的问题
1.使用spring控制事务 2.使用session.update(obj)执行更新 spring事务配置: <bean id="transactionBese" class ...