相关疑难解决方法(0)

如何在c#代码中检查死锁的可能性

我的应用程序有时会停留在下面的代码中,并不总是有时候.

所有3种方法CalcQuarterlyFigures,CalcWeeklyFiguresCalcMonthlyFigures返回Task<List<MyClass>>.

注意,这在foreach循环内部运行.

List<Task> TaskList = new List<Task>();

if(i.DoCalculateAllHistory) {

    var quarterly = CalcQuarterlyFigures(QuarterlyPrices, i.SeriesID);
    TaskList.Add(quarterly);
    var weekly = CalcWeeklyFigures(WeeklyPrices, i.SeriesID);
    TaskList.Add(weekly);
    var monthly = CalcMonthlyFigures(MonthlyPrice, i.SeriesID);
    TaskList.Add(monthly);

    Task.WaitAll(TaskList.ToArray());

    if(monthly.Result.Count > 0)
        monthlyPerfFig.AddRange(monthly.Result);

    if(weekly.Result.Count > 0)
        weeklyPerfFig.AddRange(weekly.Result);

    if(quarterly.Result.Count > 0)
        quartPerfFig.AddRange(quarterly.Result);
} else {

    monthlyPerfFig.AddRange(await CalcMonthlyFigures(MonthlyPrice, i.SeriesID));

}
Run Code Online (Sandbox Code Playgroud)

我在这里错过任何导致死锁的东西吗?

c# deadlock asynchronous task

4
推荐指数
1
解决办法
91
查看次数

标签 统计

asynchronous ×1

c# ×1

deadlock ×1

task ×1