2012-03-21 2 views
-2

Привет, Я пытаюсь использовать объект таймера в C# для обновления моей базы данных и установки конфискованной карты, если она существует более 5 секунд. У меня небольшие проблемы. Отправьте мой код нижеФункция таймера в симуляторе C# ATM

private void timer1_Tick(object sender, EventArgs e) 
{ 
    if (seconds > 5) 
    { 
     timer1.Enabled = false; 
     MessageBox.Show("Card NOT removed in time: CONFISCATED"); 
     login.cardConfiscated(cardNumber); 
     login.Visible = true; 
     this.Close(); 
    } 
} 

private void Form1_load(object sender, EventArgs e) 
{ 
    timer1.Enabled = true; 
} 

public void cardConfiscated(string number) 
{ 
    atmCardsTableAdapter1.confiscated(number); 
    atmCardsTableAdapter1.FillByNotConfiscated(boG_10033009DataSet.ATMCards); 
} 
+2

где определяется 'секундами? это для домашней работы? –

+3

Вы также должны указать, какие у вас проблемы (за пределами «мало»). –

+0

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

ответ

0

Первое, что вы никогда не устанавливаете на своем таймере.

private void Form1_load(object sender, EventArgs e) 
{ 
    timer1 = new Timer(5000); // sets interval to 5 seconds 
    timer1.Elapsed += new new ElapsedEventHandler(timer1_Tick); 
    timer1.Start(); 
} 

Я делаю пять секундного интервала выше, так что мы не должны называть таймер более чем один раз, когда 5 секунд проходит, мы можем просто перейти к сочный материал:

private void timer1_Tick(object sender, EventArgs e) 
{ 
    timer1.Stop(); 
    MessageBox.Show("Card NOT removed in time: CONFISCATED"); 
    login.cardConfiscated(cardNumber); 
    login.Visible = true; 
    this.Close(); 
} 

Наконец, следует отметить, что если вы таймер имел более короткий интервал, то вам нужно, чтобы увеличить ваши секунды, например:

private void Form1_load(object sender, EventArgs e) 
{ 
    timer1 = new Timer(1000); // sets interval to 1 second 
    timer1.Elapsed += new new ElapsedEventHandler(timer1_Tick); 
    timer1.AutoReset = true; // sets the timer to restart after each run 
    timer1.Start(); 
} 

Тогда мы должны были бы увеличивают секунды каждого интервал, как вы сделал.

private void timer1_Tick(object sender, EventArgs e) 
{ 
    seconds++; 
    if (seconds > 5) 
    { 
     timer1.Stop(); 
     MessageBox.Show("Card NOT removed in time: CONFISCATED"); 
     login.cardConfiscated(cardNumber); 
     login.Visible = true; 
     this.Close(); 
    } 
} 
Смежные вопросы