【发布时间】:2015-02-12 19:01:56
【问题描述】:
我正在使用以下方法创建许多线程
Task.Factory.StartNew(() =>
{
//do some task here
});
在某个时间点我想执行一个方法,但在此之前我想
- 确保所有当前正在运行的线程都已完成。
- 确保是否有任何创建新线程的调用应该等待并且不会丢失。
- 在我的方法执行后启动所有等待线程。
我们将不胜感激任何好的解决方案。
提前致谢
--------编辑的代码-----------
for (int i = 0; i < 10; i++)
{
Task.Factory.StartNew(() =>
{
Console.WriteLine("First Thread @ " + DateTime.Now.ToString());
});
}
当我们到达这个调用时,它应该在执行之前检查所有待处理的任务
Console.WriteLine("************************调用了另一个方法************************ ***");
当上面正在执行并且另一个请求与下面相同时,它应该只在执行上面的行(在我的情况下是方法)之后才开始。
for (int i = 0; i < 10; i++)
{
Task.Factory.StartNew(() =>
{
Console.WriteLine("Second Thread @ " + DateTime.Now.ToString());
});
}
【问题讨论】:
-
尝试使用 CountdownEvent 类msdn.microsoft.com/en-us/library/…
-
那么,你想要两种类型的任务:第一种可以并发运行,第二种应该独占运行?
-
我希望当我调用一个方法假设 methodA() 时,它应该检查是否有任何线程在运行。它会等待完成正在运行的线程,但在两者之间,如果有任何新请求来创建相同的新线程,则使用 Task.Factory.StartNew 它应该等待并且不会丢失。
标签: c# multithreading