qt子线程如何传输数据给主线程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt子线程如何传输数据给主线程相关的知识,希望对你有一定的参考价值。

参考技术A public int _CurrentThread;

//form1_load中的,启动线程的代码在这里。
private void Form1_Load(object sender, EventArgs e)

//设置最大线程数
int MaxThread = 5;

//获取需要完成的任务列表
OleDbConnection AccessConn = AccessModule.Conn("D:\\Flying Co\\flying.mdb");
string sql = "select * from ty_task where bay_flag=" + false + " order by bay_id asc";

OleDbCommand comm = new OleDbCommand(sql, AccessConn);
OleDbDataReader list = comm.ExecuteReader();

while (list.Read())

ContentParse Spider = new ContentParse();

//如果当前活动线程超过最大线程数,线程休眠
if (Spider.CurrentThread> MaxThread)

Thread.Sleep(2000);

else

//init
Spider.Url = list["bay_task"].ToString();

//启动一个线程
Thread SpiderThread = new Thread(new ThreadStart(Spider.execute));
SpiderThread.Start();
MessageBox.Show(Spider.CurrentThread.ToString());

//任务设置为已处理
sql = "update ty_task set bay_flag=" + true + " where bay_id=" + list["bay_id"].ToString();
AccessModule.Execute(AccessConn, sql);



list.Close();
AccessModule.DisConn(AccessConn);


//线程启动的是这个类的方法
class ContentParse

private string _Url;

//设置任务参数
public string Url

set

_task = value;



public void execute()


//活动线程数加1
Interlocked.Increment(ref _CurrentThread);

//中间处理任务的代码省略

//该线程完成,活动线程减1
Interlocked.Decrement(ref _CurrentThread);


我现在纠结的就是这个Interlocked.Increment(ref _CurrentThread);应该是开一个线程就要加1的对吧?
但是我在form1中间用 MessageBox.Show(Spider.CurrentThread.ToString());,总是0噢

以上是关于qt子线程如何传输数据给主线程的主要内容,如果未能解决你的问题,请参考以下文章

java 子线程如何返回结果给主线程

c语言中,创建的子线程如何给主线程发消息?

Android Handler 子线程获取主线程handler发送数据给主线程

Android Handler 子线程获取主线程handler发送数据给主线程

QT实现多线程编程

QT中UI主窗口如何与子线程相互传递参数