我有一些以下形式的代码:
static async Task DoSomething(int n) { ... } static void RunThreads(int totalThreads,int throttle) { var tasks = new List<Task>(); for (var n = 0; n < totalThreads; n++) { var task = DoSomething(n); tasks.Add(task); } Task.WhenAll(tasks).Wait(); // all threads must complete }
麻烦的是,如果我没有限制线程,事情就会开始崩溃.现在,我想启动最多的节流线程,并且只在旧线程完成时启动新线程.我尝试过几种方法,迄今为止没有一种方法可行.我遇到的问题包括:
>任务集合必须完全填充所有任务,无论是活动还是等待执行,否则最终的.Wait()调用只会查看它开始的线程.
>链接执行似乎需要使用Task.Run()等.但是我需要从一开始就引用每个任务,并且实例化任务似乎会自动启动它,这是我不想要的.
这该怎么做?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。