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)锁的关系 ...
随机推荐
- 238. Product of Array Except Self 由非己元素形成的数组
[抄题]: Given an array of n integers where n > 1, nums, return an array output such that output[i] ...
- Linux设置串口波特率等参数
转自 http://blog.csdn.net/zoomdy/article/details/50921336 mingdu.zheng at gmail dot com stty查看串口参数 stt ...
- C#实现访问网络共享文件夹
C#实现访问网络共享文件夹,使用 WNetAddConnection2A 和 WNetCancelConnection2A. 在目标服务器建立共享文件夹,建立访问账号test; public enum ...
- java 实现mysql数据库备份
package com.itenp.gen.action; import java.io.BufferedReader; import java.io.FileInputStream; import ...
- ROS导航包的介绍
博客转载自:https://blog.csdn.net/handsome_for_kill/article/details/53130707#t3 ROS导航包的应用 利用ROS Navigation ...
- Part3_lesson4---协处理器访问指令
1.什么是协处理器? CP15是协处理器, CP15的作用:系统控制协处理器CP15,它提供了额外的寄存器,这些寄存器用于配置和控制cache,MMU,保护系统,时钟模式,和其他的系统项,比如大小端操 ...
- Robot Framework - 常用断言讲解
RobotFramework带有丰富的系统关键,使用时无需导入,直接使用,为写自动化用例带来了极大的方便:不能停留在知道或者是会得程度,只有熟练使用各关键字,才能提升自动化用例的写作效率. 下面将逐个 ...
- Appium移动端自动化测试之元素定位(三)
1.name定位 driver.find_element_by_id(') driver.find_element_by_id(') driver.find_element_by_name('登录') ...
- java 列表与集合总结
列表与集合 (一切输出都用for each!丢弃迭代器) 列表List 1 顺序表 Arraylist 适用于静态查找2 链式双向表 Linkedlist 适用于增删该查3 (容器) Vecto ...
- Educational Codeforces Round 61 (Rated for Div. 2) G(线段树,单调栈)
#include<bits/stdc++.h>using namespace std;int st[1000007];int top;int s[1000007],t[1000007];i ...