Я установки таймера:методы Таймер не называется
System.Timers.Timer timer = new System.Timers.Timer (1000);
timer.Enabled = true;
timer.Elapsed += (object sender, System.Timers.ElapsedEventArgs e) => {
timer.Enabled = false;
ui.CldOnPhoneNumberSent(); // <- this method is not fired
};
второй метод не называется. если я переключать методы как в:
timer.Elapsed += (object sender, System.Timers.ElapsedEventArgs e) => {
ui.CldOnPhoneNumberSent();
timer.Enabled = false; // <- this method is not called and the timer repeats
}
, что случилось?
Edit: Когда метод вызываются из таймера, это не называется полностью !:
timer.Elapsed += (object sender, System.Timers.ElapsedEventArgs e) => {
((Timer)sender).Enabled = false;
ui.method1();
};
void method1()
{
do something; //<-- called
do Something; //<-- not called
}
Попробуйте использовать отладчик, установите контрольные точки и выполните свой код. –
Может ли 'CldOnPhoneNumberSent' выбрасывать исключение? Запустили ли вы его в отладчике? –
В частности, идентификатор 'ui' предполагает, что вы каким-то образом взаимодействуете с пользовательским интерфейсом, предположительно в приложении Winforms/WPF? В этом случае он всегда будет терпеть неудачу, поскольку вы не можете получить доступ к этим объектам из потоков, отличных от тех, на которых они были созданы. Вы действительно не хотите использовать 'System.Windows.Forms.Timer' вместо этого? – Luaan