标题:[求助]如何实现线程间的通信
取消只看楼主
xc_lw
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2004-11-12
 问题点数:0 回复次数:1 
[求助]如何实现线程间的通信

想写这样一个程序.采用双线程.T1去搜索硬盘上的*.exe文件.搜到以后立即告诉T2,然后T2将此文件名列出到窗体上的ListBox中.同时T1继续搜索.那么T1和T2之间的即时通信如何实现呀?

搜索更多相关主题的帖子: 线程 通信 
2006-02-28 15:55
xc_lw
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2004-11-12
得分:0 
以下是引用月夜枫华在2006-2-28 17:35:00的发言:

首先,定义一个公有集合
ArrayList AL_FileName=new ArrayList();
T1的线程代理函数
private void T1()
{
while(true)
{
string s=this.selectExtFile();//假设这是用来执行查找文件的函数
//在设置好循环的结束标志
}
}
private void T2()
{
while(true)
{
string filename=this.getAndDelItem();
if(filename!="")
{
//显示filename
}
//设置循环结束条件
}
}
private string getAndDelItem()
{
string s="";
lock(this)
{
if(this.AL_FileName.Count>0)
{
s=this.AL_FileName[0];
this.AL_FileName.RemoveAt(0);
}
}
return s;
}

这样能做到即时通信吗?你这样做好象是两个线程好象是异步执行的呀!可不可以用消息队列来实现呢.T2搜到一个文件,向主线程发一消息.主线程接到消息后会触发相关的事件.


2006-03-01 09:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-47639-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.296653 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved