Sono nuovo e sto cercando di capire qualcosa. Ho un semplice programma che esegue un metodo sia quando un evento accade o quando il mio timer ticchetta. Diciamo solo che il metodo impiega 5 secondi per essere completato. Durante questi 5 secondi potrebbe verificarsi un evento. Che cosa utilizzerei / fare per assicurarmi che il mio metodo non venga chiamato mentre è già in esecuzione.
O è qualcosa di cui non mi dovrei preoccupare in un programma semplice, in quanto non funzionerebbe fino a quando il metodo non viene eseguito comunque?
Un po 'di background ed esempio. Sto usando System.Windows.Forms.Timer, non sto usando alcun thread o altro, e ho solo una semplice applicazione Windows con un timer, un metodo per fare cose e due gestori di eventi.
Program{
public Program(){
DoSomething();
Event.EventHappened += HandleEvent;
}
void DoSomething(){
MyTimerVariable.Stop();
InitMyTimer();
//Just do something check network, access db write line, something
//that in this example takes 5 secs for example purposes
MyTimerVariable.Start();
}
void HandleEvent(){
DoSomething();
}
void InitMyTimer(){
// Create Timer, and add Timer tick event
}
void TimerTickedEvent(){
DoSomething();
}
}
Ho lasciato alcune cose fuori da quel programma, ma stavo solo cercando di mostrare quanto sia semplice. Stavo solo pensando di renderlo più efficiente in modo che nel bel mezzo di "DoSomething ()" venga attivato un evento, non vorrei che due metodi "DoSomething ()" funzionassero.