Systemzeit in Sekunden anzeigen

CopWorker

Erfahrenes Mitglied
Hallo zusammen,

besteht die Möglichkeit die Systemzeit so zu steuern, dass diese in Sekundenschritten in einer Textbox erscheint.
Die Ausgabe der Systemzeit habe ich bereits so angegangen, dass die Zeit in Millisekunden ausgegeben werden.

Erst habe ich einen eigenen Thread dafür eingerichtet.

C#:
private static Thread OperatingCycle;

OperatingCycle = new Thread(CreateOperatingCycle);

public void CreateOperatingCycle()
{
    while (OperatingCycle.ThreadState == ThreadState.Running)
    {
        OperatingTime();
    }
}

private void OperatingTime()
{
    DateTime dtAllSec = DateTime.Now;

    clOrderMan.TestOperationSessionRun(dtAllSec);
}

Dann die Systemzeit über einen Funktionsaufruf an eine Textbox des Dialogs übergeben.

C#:
public void TestOperationSessionRun(DateTime dtRuntime)
{
    if (clOrderManDlg != null && clOrderManDlg.Visible)
    {
        if (clOrderManDlg.InvokeRequired)
        {
            MethodInvoker del = delegate { TestOperationSessionRun(dtRuntime); };
            clOrderManDlg.Invoke(del);
        }
        else
            clOrderManDlg.ShowRuntime(dtRuntime);
    }
}

public void ShowRuntime(DateTime dtRuntime)
{
    lbRunTime.Text = dtRuntime.ToString("dd.MM.yyy HH:mm:ss.fff");
}

Ich könnte ja vom DateTime Objekt "dtAllSec" die Millisekunden auf 0 abfragen, aber ich weiß ja nicht wann der Thread zuschlägt
und ob bei einem Aufruf des Threads der Millisendenwert auf 0 sich befindet.

????
Vielen Dank.
Grüße von CopWorker
 
Hallo Zvoni,
in dem Thread befinden sich noch weiter Operationen die
ich zyklisch durchlaufen muss.
Welchen Vorteil würde mir die Timer Klasse hierbei verschaffen?

Gruß CopWorker
 
Hallo Zvoni,
in dem Thread befinden sich noch weiter Operationen die
ich zyklisch durchlaufen muss.
Welchen Vorteil würde mir die Timer Klasse hierbei verschaffen?

Gruß CopWorker
Dass du das Intervall angeben kannst (1000 Millisekunden = 1 Sekunde), und du ein Event angeben kannst, welches gezündet wird nach Ablauf des Intervals. --> Rufe von hier deine Operationen auf.
Schau dir mal das Beispiel im Link an:
In der SetTimer-Prozedur wird das Timer-Objekt mit einem Interval von 2 Sekunden erstellt und
der Eigenschaft "Elapsed" des Timer-Objekts ein Event-Handler übergeben ("OnTimedEvent")

Und wenn ich mich recht erinner starten so ziemlich alle Timer (egal in welcher Sprache) nen eigenen Thread
Siehe auch hier: Do C# Timers elapse on a separate thread?
 
Hallo Zvoni,
den Timer verwende ich in Zusammenhang mit einem BackgroundWorker.
Da ist bei Vorgängen passend bei denen ein Prüfvorgang mehrmals in
bestimmten Abständen durchlaufen werden soll.
Den Thread nehme ich zum Durchforsten von einer Auftragsliste
die ständig überprüft und aktualisiert werden soll.

Veilen Dank.
Gruß CopWorker
 
Das ist doch was ich meine:
Du erzeugst einen neuen Thread, indem du CreateOperatingCycle aufrufst, in welcher du in einer Endlos-Schleife (solange der Thread läuft) du permanent OperatingTime (und was mit anhängt) aufrufst.
Anstatt der Endlos-Schleife dort das Timer-Objekt erzeugen (1000 Millisekunden), und in der "Elapsed"-Eigenschaft einen Event zuweisen (Das was bei dir gerade OperatingTime ist --> Auf die Signatur der Prozedur achten), den Timer starten. Fertig.
Das einzige was du machen musst ist, wenn der Thread gestoppt wird ist aufzuräumen (Timer stoppen, releasen usw.)

EDIT: Hab grad was gefunden: Thread.Sleep Methode (System.Threading)
Schon daran gedacht, den Thread schlafen zu schicken?

EDIT2: Noch was gefunden: Thread Konstruktor (System.Threading)
Ein Thread beginnt nicht mit der Ausführung, wenn er erstellt wird. Um den Thread für die Ausführung zu planen, rufen Sie die Start -Methode auf.
Von wo startest du überhaupt deinen Thread?
 
Zuletzt bearbeitet:
Hallo Zvoni,

habe meinen Quellcode nicht 1 zu 1 aus meinem Projekt kopiert.

C#:
private static Thread OperatingCycle;

OperatingCycle = new Thread(CreateOperatingCycle);
OperatingCycle.Start();

Vielen Dank für den Link:
Thread Konstruktor (System.Threading)
Das leuchtet mir ein.

Grüße CopWorker
 

Neue Beiträge

Zurück