相关疑难解决方法(0)

Parallel.ForEach vs Task.Factory.StartNew

下面的代码片段有什么区别?两个都不会使用线程池线程吗?

例如,如果我想为集合中的每个项目调用一个函数,

Parallel.ForEach<Item>(items, item => DoSomething(item));

vs

foreach(var item in items)
{
  Task.Factory.StartNew(() => DoSomething(item));
}
Run Code Online (Sandbox Code Playgroud)

c# parallel-extensions task-parallel-library c#-4.0

260
推荐指数
4
解决办法
13万
查看次数

限制.NET 4.5中的并发任务量

观察者以下功能:

public Task RunInOrderAsync<TTaskSeed>(IEnumerable<TTaskSeed> taskSeedGenerator,
    CreateTaskDelegate<TTaskSeed> createTask,
    OnTaskErrorDelegate<TTaskSeed> onError = null,
    OnTaskSuccessDelegate<TTaskSeed> onSuccess = null) where TTaskSeed : class
{
    Action<Exception, TTaskSeed> onFailed = (exc, taskSeed) =>
    {
        if (onError != null)
        {
            onError(exc, taskSeed);
        }
    };

    Action<Task> onDone = t =>
    {
        var taskSeed = (TTaskSeed)t.AsyncState;
        if (t.Exception != null)
        {
            onFailed(t.Exception, taskSeed);
        }
        else if (onSuccess != null)
        {
            onSuccess(t, taskSeed);
        }
    };

    var enumerator = taskSeedGenerator.GetEnumerator();
    Task task = null;
    while (enumerator.MoveNext())
    {
        if (task == null) …
Run Code Online (Sandbox Code Playgroud)

.net asynchronous

11
推荐指数
2
解决办法
3971
查看次数

我可以限制同时运行的System.Threading.Tasks.Task对象的数量吗?

我正在使用Task类来进行多线程计算.

例如:

   List<Task> taskList = new List<Task>();
   for(int i=0;i<10;i++){
        var task = new Task(() => Console.WriteLine("Hello from taskA."));
        taskList.Add(task);
        task.Start();
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法让我们说,最多只能运行3个任务,其余的要等待?

.net c# multithreading

5
推荐指数
2
解决办法
1万
查看次数

自定义任务框架

我想知道是否存在可以管理某些"任务"的现有框架.

我知道任务并行,但(如果我错了,请纠正我)我不认为它符合我的需要(主要是因为它适用于完成的任务列表).

我需要的基础是我想给X线程做一些工作.

但是:

  • 每个任务都可以生成创建将来要执行的新任务(可以是0任务,就像它可以是100个任务一样)
  • 如果我的任务列表为空,我希望我的非工作线程等待所有线程完成他们的任务,也许我最后一个线程正在运行,这将生成其他3个线程可以处理的50个新任务.

你知道什么可以帮助我吗?或者我应该用手管理一切?

.net c# multithreading task-parallel-library

0
推荐指数
1
解决办法
468
查看次数