2015-12-13 3 views
-4

У меня есть этот метод:Бесконечный цикл по методу

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(); 

, но она идет по ошибке:

Make sure you do not have an infinite loop or infinite recursion.

enter image description here

System.StackOverflowException was unhandled 

_HResult = -2147023895

Ошибка в этой строке 'dateTimePicker2.Value = dateTimePicker2.Value.AddDays(1);' Что случилось?

+3

'from' и' to' уже имеют тип 'int'. Почему вы пытаетесь их разобрать? –

+0

Вы уверены, что там находится бесконечный цикл? Нет цикла рекурсии, который не найден. –

+0

@ Юваль Ицчаков - Ты в порядке, теперь я исправлю это, и я позволю тебе. –

ответ

2

Психическая отладка АКТИВИРУЕТ!

Я подозреваю, что ОП пытается выполнить двухстороннюю привязку.

  • Когда контролировать изменения, обновления управления B (через свойство)

  • Когда Control B изменения, обновления управления A

Самое простое решение сделать следующую проверку.

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

Вы не видите проблемы с

dateTimePicker2.Value = dateTimePicker2.Value.AddDays(1); 

Вы добавляете в день dateTimePicker2.Value и в свою очередь ValueChanged обжигают
Тогда некоторые, где в этой цепочке вы добавляете день и выстрелить другой ValueChanged
Положите отладку на эту строку, и я подозреваю, что вы увидите ее много раз.

Вам необходимо опубликовать код, который действительно выдает ошибку. Нет указаний на то, что код, который вы разместили в верхней части вопроса, связан с ошибкой.

+0

' dateTimePicker2.Value = dateTimePicker2.Value.AddDays (1); ' находится внутри свойств dateTimePicker2_ValueChanged. Datetimepicker2 изменить день, чтобы вставить его и будет отражать контроль –

+1

@GianniGiordano. И вы не видите проблемы с этим? Вы продолжите проголосовать. Запустите debug на ValueChanged и опубликуйте код, который терпит неудачу (а не какой-то несвязанный блок кода над ошибкой). Покажите немного усилий. – Paparazzi

+0

Я не знаю, потому что код находится в этой строке кода. Отладка подчеркивает эту строку, и Coke покажет мне это сообщение об ошибке. Вызываемый код - это только две строки. Может быть, datetepicker находится внутри его свойств? И не может себя отразить? –

Смежные вопросы