大虾们指点指点!!

JamesKiller 2009-06-04 10:10:44
我是一个C#初学者,正在写一个处理大量数据的控制台程序,程序中实现了A->B->C->....等若干步骤的数据处理过程,
我希望实现实现的效果如下:

1.A先执行,A执行完毕以后B才执行,依次类推
2.B是由A的某个子线程启动的,C是由B发出的某个子线程启动的,依次类推
3.在每个步骤都可能发出若干个子线程,进行数据处理操作,同时在控制台中输出信息提示
4.每个步骤的所有的子线程都结束以后下一步骤才开始执行

大致的情况就像上面写的一样,程序我基本上作出来了,但测试过程中始终感觉不是很稳定,所以请教大家以下几个问题:

1.我在控制台的主程序void Main中只启动了A,当A中的子线程发出以后,控制台窗口是不是直接就结束了(即使子线程没有结束)?我现在是在后面加了一个Console.ReadLine(),才让控制台窗口停止而没有退出,代码示意如下。
void Main()
{
A();
Console.ReadLine();
}
void B()
{
.......
}
void C()
{
.....
}
.......

2.如何精确的判断A步骤中发出的所有子线程都结束了,以方便启动下一步骤的工作。

3.现在我是通过A发出的某个子线程来启动B的(依次类推),但当我想调整各步骤间的先后顺序时比较麻烦,要改几处地方,怎么样的设计可以让我灵活的调整各步骤的顺序。

有可能问题描述得不是很清楚,也有可能问题比较低级,但烦请各位大虾指点指点!!!!!
...全文
22 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kugua70708 2009-06-07
  • 打赏
  • 举报
回复
线程是单独并行执行的,Main所在的线程创建新进程后,自己会往下执行,你如果没事情做,那它就结束了(当然,所在进程还在)
void Main()
{
A();
Console.ReadLine();
}


你的第二个问题,可以进行线程的同步(关于线程同步可以帮助),也可以创建一个单独的控制线程,按一定时间间隔轮询其它线程的状态
,其它的线程是否属于A创建的,可以在A创建子线程时加入共享数据结构,这样就好判断了,最后由控制线程创建B进行操作,根据需要改变控制线程的轮询对象(当然你也可以把控制线程做在步骤类里,不过这样复用不高)
JamesKiller 2009-06-05
  • 打赏
  • 举报
回复
没有人!!!!!!!
ToHai 2009-06-05
  • 打赏
  • 举报
回复
来学习学习
JamesKiller 2009-06-05
  • 打赏
  • 举报
回复
大哥大姐们,帮兄弟看看嘛
自己先顶一下

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧