Deutsch
Quelltexte/ Codesnippets

Echte Laufende Threads Zeitanzeige

 
Immer wieder gefragt: Die laufende Zeitanzeige im Titel oder Status oder oder ...

Gefragt speziell wird eigentlich auch nach einer Anzeige, die sich unabhängig vom Hauptprogramm selbständig aktualisiert, auch wenn das Hauptprogramm arbeitet.

Dieses Verhalten ist mit Präkompilern erzielbar, xpse bietet hierzu die Pseudo-Klasse "Thread" [...]  , um basichaften Umgang mit echten Threads herzubilden.

Eine einfache Zeitanzeige im Hauptfenstertitel kann man somit so schön kurz formulieren:
KompilierenMarkierenSeparieren
 {$cleq}
cls
var thread&=thread.start(procaddr(meinThread),0,"")

while 1

    waitinput
    //... programm // break

wend

thread.close(thread&)
end

nProc meinThread

    Parameters thread&,dataLong&,dataString$

    WhileNot thread.message(thread&)=wm_close

        setText(%hWnd,"Mein FensterTitel - ["+time$(0)+"."+substr$(time$(1),1,".")+"]")
        sleep(1000)

    wend

    return 0

endProc

, bzw.
KompilierenMarkierenSeparieren
 {$cleq}
cls
var thread&=thread.start(procaddr(meinThread),0,"")

while 1

    waitinput
    //... programm // break

wend

showWindow(%hWnd,0)
thread.stop(thread&)

while thread.is(thread&)

wend

thread.close(thread&)
end

nProc meinThread

    Parameters thread&,dataLong&,dataString$

    WhileNot thread.message(thread&)=wm_close

        setText(%hWnd,"Mein FensterTitel - ["+time$(0)+"."+substr$(time$(1),1,".")+"]")
        sleep(1000)

    wend

    return 0

endProc

sauberer programmiert wäre, weil der Thread nicht abgewürgt wird sondern gewartet wird, bis dieser korrekt beendet ist.

Eine andere Möglichkeit bietet die SetTimer-Api.

Da es in XProfan die Befehle KillTimer und SetTimer gibt, per ~ auf die Apis zeigen, z.B. ~SetTimer(... :
KompilierenMarkierenSeparieren
 {$cleq}
WindowStyle 520
cls
var zeitAnzeige.timer&=~setTimer(0,0,1000,procAddr(zeitAnzeige.timerProc))

While 1

    WaitInput
    Case %key=2: BREAK

EndWhile

~killTimer(0,zeitAnzeige.timer&)
end

nProc zeitAnzeige.timerProc

    Parameters wnd&,msg&,id&,tme&
    setText(%hWnd,date$(1)+" - "+time$(0)+" Uhr - "+time$(2)+" ["+str$(&getTickCount)+"]")

EndProc


Wer weitere Varianten kennt, hier ist ein guter Platz dafür - liegt in Anwendungstemplates und Codesnippets.

Bedingungen sind kein FastMode (für beste Integration in normale Anwendungen) und keine unsichere Anwendung von ProcAddr, also nichts mit absehbarer Absturzgefahr.

Wer also weitere Beispiele hat oder benötigt, bitte posten.

Beispielexen im Anhang.

560 kB
Hochgeladen:15.03.2010
Ladeanzahl113
Herunterladen
561 kB
Hochgeladen:15.03.2010
Ladeanzahl96
Herunterladen
 
15.03.2010  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.722 Betrachtungen

Unbenanntvor 0 min.
Erfurt04.08.2020
AndreasS17.12.2018
Member 389165722.09.2018
iF20.06.2018
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie