[求助]如何实现线程间的通信
想写这样一个程序.采用双线程.T1去搜索硬盘上的*.exe文件.搜到以后立即告诉T2,然后T2将此文件名列出到窗体上的ListBox中.同时T1继续搜索.那么T1和T2之间的即时通信如何实现呀?
首先,定义一个公有集合
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搜到一个文件,向主线程发一消息.主线程接到消息后会触发相关的事件.