OnTimedEvent unmittelbar nach Initialisierung auslösen

CopWorker

Erfahrenes Mitglied
Hallo zusammen,

gibt es die Möglichkeit dass beim Einrichten eines Timers der Event "OnTimedEvent"
unmittelbar nach der Initialisierung des Timers ausgelöst wird.
Also bevor die Timer IntervalTime abgelaufen ist.

Meine Methode um den Timer einzurichten sieht so aus.

C#:
private int StartTimer()
{
    int iRet = 0;

    //Wenn nicht existiert Timer einrichten
    if (tmKeepAlive == null)
    {
        tmKeepAlive = new System.Timers.Timer(iInterval);
        tmKeepAlive.Elapsed += OnTimedEvent;
        tmKeepAlive.AutoReset = true;
    }

    if (!tmKeepAlive.Enabled || !tmKeepAlive.Interval.Equals(iInterval))
    {
        tmKeepAlive.Interval = iInterval;
        tmKeepAlive.Enabled = true;
    }

    return iRet;
}

C#:
private void OnTimedEvent(Object source, ElapsedEventArgs e)
{
    clTrace.GenerateTrace("TIMER", "OnTimedEvent()", string.Format("Timer Event {0} ausgelöst", iEventCnt));
    iEventCnt++;
}

Vielen Dank.
Grüße von CopWorker
 

Spyke

Premium-User
Lagere das was im OnTimedEvent passieren soll in eine extra Methode aus.
Diese Methode rufst du dann im OnTimedEvent auf und an der Stelle wo du den Timer initialisierst.
 

CopWorker

Erfahrenes Mitglied
Hallo Spyke,

so mache ich dies bereits.
Ich habe mal was in einer Konsolenanwendung gemacht mit dem System.Threading.Timer().
Dem kann ich sagen, dass er sofort den "OnTimedEvent" auslösen soll.
Den Code habe ich leider gelöscht.

Trotzdem vielen Dank.
Grüße von CopWorker
 

Spyke

Premium-User
Beim System.Threading.Timer kannst du es im Konstruktor glaube mit angeben ob er sofort ausführen soll.