![](/img/trans.png)
[英]C# - Notifying the parent property when one of the child properties changes
[英]Single Child thread notifying Parent to indicate that it is finished so Parent can launch another child [C#]
我有一个PARENT线程负责执行作业,每执行一个作业,它都会启动一个CHILD线程来执行该工作-但是,永远不允许一次启动一个以上的线程(一个孩子)。 例如,在有10个工作要做的情况下,应一个接一个地做-因此,需要知道每个作业何时完成,以便可以启动下一个待处理的工作。
通常,我只需要.Join()或WaitHandle即可完成此任务-除非在这种情况下,我无法阻止Parent线程,因为它在等待孩子完成操作时还需要执行其他职责...
请允许我举例说明:
class Parent
{
private Thread threadJob;
public Parent()
{
// this is where the main loop occurs
while (bRun)
{
// This is where I need help ... how can I know that threadJob is not currently performing a task?
// is there an event it can fire to let Parent know that it is done? A flag it can set?
if (threadJob child is not currently running a job)
{
threadJob = new Thread(new ThreadStart(PerformWork));
threadJob.IsBackground = true;
threadJob.Start();
}
.. do other work ...
.. keep doing other work ...
}
}
};
任何帮助或建议,将不胜感激。 谢谢,
处理此问题的另一种方法是使工作线程始终保持活动状态,并从待处理作业队列中读取它。 这样,您一次只按顺序执行一项工作,但是您不必担心与主线程同步。 作业的输出可以进入自己的队列,主线程可以检查该队列是否为空,如果不是,则从队列中检索。
编辑
更仔细地查看您的示例,似乎每次线程所做的工作似乎都不相同,因此也许只是让线程循环而不是终止。
如果您愿意按照问题所示进行有效轮询,则可以使用Thread.IsAlive
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.