【发布时间】:2018-03-29 03:57:06
【问题描述】:
我有一个程序运行一个方法,像这样抛出多个任务
private static readonly Task[] Tasks = new Task[Properties.Settings.Default.NumberOfTasksToConsume];
public static void StartService()
{
for (var i = 0; i < Tasks.Length; i++)
{
Tasks[i] = new Task(() => ProcessAbonents(Properties.Settings.Default.NumberOfRecordsToRetrive));
Tasks[i].Start();
}
Task.WaitAll(Tasks);
Task.Run(() => DeleteAbonents((int)EnumCategories.Social));
if (BadPhoneNumbers.Count > 0)
Task.Run(() => SaveBadNumbers((int)EnumCategories.Social));
if (Errors.Count > 0)
Task.Run(() => SendEmail());
}
当程序构建处于调试模式时,它可以工作并进入“ProcessAbonents”方法,但当构建处于发布模式时,for循环工作正常,但它没有进入此方法。
【问题讨论】:
-
请清理并重建并检查您的发现。也许使用一些日志记录。这对您提供的代码没有意义
-
你在某处等待任务吗?也许程序在任务开始之前就结束了?
-
@plainionist 否 在循环内部有方法 ProcessAbonents 的调用,但它仅在发布版本时才进入此方法。调试构建工作正常。
-
可能是
Properties.Settings.Default.NumberOfTasksToConsume为 Debug 和 Release 设置不同? -
@ShayYizhak 不,两个版本都是一样的。
标签: c# parallel-processing async-await task