【问题标题】:How to run method in a task in for loop and only create a thread?如何在for循环的任务中运行方法并且只创建一个线程?
【发布时间】:2015-06-03 13:48:56
【问题描述】:
for(i=0,i<1000,i++){ 
   //method1 or
   Task.Run(()=> MyTask()) 
   //method2 
   Task.Factory.StartNew(MyTask) 
} // sample code

我想让 MyTask 运行 1000 次,但我不想创建 1000 个线程。

我只想要一个线程,如何通过更改示例代码来实现?

【问题讨论】:

  • 如果你只想创建一个线程,为什么不把任务创建移到outside循环呢?即启动一个运行所有迭代的任务。
  • 您可能正在寻找Parallel.For?

标签: c# asp.net multithreading task


【解决方案1】:

将循环移动到MyTask 或将其包装在另一个执行循环的方法中:

Task.Run(() => My1000Tasks());

private void My1000Tasks()
{
    for (int i = 0; i < 1000;i++)
        MyTask();
}

【讨论】:

  • 这甚至不能编译
  • @BinkanSalaryman 我从 OP 复制了 for 语句,该语句无法编译。现在已经修复了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2022-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多