方法上的无限循环

时间:2015-12-13 15:30:38

标签: c# .net winforms

我有这个方法:

private int calculate_min(Int32 from, Int32 to)
{
    string minuti = "0";
    long result = (Convert.ToInt32(to) - Convert.ToInt32(from));

    TimeSpan ts = TimeSpan.FromSeconds(result);
    double minutes = ts.TotalMinutes;
    minuti = Convert.ToString(minutes);
    return Convert.ToInt32(minuti);
}

我用

来称呼它
string TxtCausale = calculate_min(Convert.ToInt32(Controllo_2_Secondi),
                                  Convert.ToInt32(Controllo_1_Secondi)).ToString();

但它出错了:

  

确保没有无限循环或无限递归。

enter image description here

System.StackOverflowException was unhandled

_HResult = -2147023895

错误出现在这一行'dateTimePicker2.Value = dateTimePicker2.Value.AddDays(1);' 怎么了?

2 个答案:

答案 0 :(得分:2)

心灵调试激活!

我怀疑OP正试图进行双向绑定。

  • 当控制A更改时,更新控件B(通过属性)

  • 当控制B更改时,更新控制A

最简单的解决方案是进行以下检查。

public double Controllo_2_Secondi
{
    get
    {...}
    set
    {
        if (Controllo_2_Secondi == value) return;
        //Your logic here
    }
}

答案 1 :(得分:0)

你没有看到

的问题
dateTimePicker2.Value = dateTimePicker2.Value.AddDays(1);

您向dateTimePicker2.Value添加了一天,然后激活了ValueChanged 然后在该链中的某些位置添加一天并触发另一个ValueChanged
在该行上进行调试,我怀疑你会多次看到它被调用

您需要发布实际抛出错误的代码。没有迹象表明您在问题顶部发布的代码与错误有关。