【发布时间】:2013-06-06 11:22:25
【问题描述】:
我有以下代码:
static void Main(string[] args)
{
TaskExecuter.Execute();
}
class Task
{
int _delay;
private Task(int delay) { _delay = delay; }
public void Execute() { Thread.Sleep(_delay); }
public static IEnumerable GetAllTasks()
{
Random r = new Random(4711);
for (int i = 0; i < 10; i++)
yield return new Task(r.Next(100, 5000));
}
}
static class TaskExecuter
{
public static void Execute()
{
foreach (Task task in Task.GetAllTasks())
{
task.Execute();
}
}
}
我需要将 Execute 方法中的循环更改为与多个线程并行,我尝试了以下方法,但它不起作用,因为 GetAllTasks 返回 IEnumerable 而不是列表
Parallel.ForEach(Task.GetAllTasks(), task =>
{
//Execute();
});
【问题讨论】:
-
@Giedrius 谢谢,如果这是我会给你 25 分的答案,那就对了
-
你可能不应该给你的班级打电话
Task,以免与System.Threading.Tasks.Task混淆。
标签: c# .net parallel.foreach