求一个线程的思路
主要是这样的.我有一个全局的list,我要用线程来便利它,但因为里面有个属性,是说明能不能用线程的,所以,我不用能线程来便利,只能如我以下的结构
List<Data> list=new List<Data>;
void CheckList(int id)//id为要检查的list索引.
{
//这里就是判断list是否可以使用线程来抓取
if(list[i].userThread)
UserThread();
else
noUserThread();
}
void UserThread()
{
// 开启线程
ThreadStart ts = new ThreadStart(OpenThread);
if (ts != null)
{
Thread CatchThread = new Thread(ts);
CatchThread.Start();
}
}
void OpenThread()
{
//这里就处理要处理的一堆事情,我想在处理完这一堆事情后,继续抓下一个.list.当然,是有个全局变量记录当前抓取到第几个得.
}
但这样写就有问题,就是在线程内在new一个线程.这是错误的.不知道有什么好的办法.能不在线程内创建线程呢? --------------------编程问答-------------------- CheckList --------------------编程问答-------------------- List<Data> list=new List<Data>;
private AutoResetEvent[] autoEvents = new AutoResetEvent[]
{
new AutoResetEvent(false)
};
void CheckList(int id)//id为要检查的list索引.
{
//这里就是判断list是否可以使用线程来抓取
if(list[i].userThread)
{
UserThread();
WaitHandle.WaitAll(autoEvents);
}
else
noUserThread();
}
void UserThread()
{
// 开启线程
ThreadStart ts = new ThreadStart(OpenThread);
ts.IsBackground=true;
ts.Start()
}
void OpenThread()
{
autoEvents[0].WaitOne();
//...处理方法
autoEvents[0].Set();
}
main()
{
for(int i=0;i<list.Count;i++)
{
CheckList(list[i].ID);
}
} --------------------编程问答-------------------- 线程内再开线程不行吗? --------------------编程问答--------------------
List<Data> list=new List<Data>;
ThreadStart ts = new ThreadStart(OpenThread);
ts.start();
void OpenThread()
{
CheckList(id);
}
void CheckList(int id)//id为要检查的list索引.
{
//这里就是判断list是否可以使用线程来抓取
if(list[i].userThread)
{
//do something
}
}
把思路简化一下
补充:.NET技术 , C#