Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
rix
Anmeldungsdatum: 20.03.2007 Beiträge: 20
|
Verfasst am: 21.05.2007, 12:09 Titel: Was anderes als SLEEP |
|
|
Hallo Leute,
ich stehe im Moment auf dem Schlauch.
Mein Programm analysiert alle 5 Minuten eine Datei auf einen bestimmten Dateiinhalt. Für diesen Rythmus nutze ich SLEEP, nur kann ich wärend dieser Zeit keine weiteren Eingaben machen.
Ich möchte aber nicht das das Programm wärend diesen 5 Minuten SLEEP's "hängt", ich muss weitere Eingaben tätigen. Wie kann ich das lösen?
TIMER?
EDIT: DOS Programm  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.05.2007, 12:25 Titel: |
|
|
ohne kommentar (denn der is im quellcode ):
Code: |
dim as double start = timer
do
sleep 1 'nötig, um prozessorlast zu senken
[hier deine aktionen]
loop until timer > start + 5 * 60 '5 minuten
|
_________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
rix
Anmeldungsdatum: 20.03.2007 Beiträge: 20
|
Verfasst am: 21.05.2007, 12:58 Titel: |
|
|
Man man - was fürn riesen Schlauch - THX  |
|
Nach oben |
|
 |
rix
Anmeldungsdatum: 20.03.2007 Beiträge: 20
|
Verfasst am: 21.05.2007, 16:39 Titel: |
|
|
Mmh nochmal danke für den Tip.
Das Problem ist nur, dass es um Benutzereingaben während der Zeitschleife geht.
Wenn ich wie folgt Arbeite:
dim as double start = timer
do
sleep 1 'nötig, um prozessorlast zu senken
INPUT "Mach ne Eingabe",MNE$
...
...
...
loop until timer > start + 5 * 60 '5 minuten
Dann funktioniert die Schleife nicht, weil er wohl auf eine Eingabe wartet.
Das Prob. ist, der User kann Eingaben machen, muss er aber nicht, und die Zeitschleife muss weiter arbeiten. (auch ohne Eingaben des Users).
Ich zerbrech mir schon den halben Tag den Kopf darüber
Ich brauch nur nen kleinen Denkanstoß, ein Teilcode brauch mir keiner geben ... Nur so falls ihr denkt ich will Euch die Arbeit machen lassen. THX |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 21.05.2007, 19:06 Titel: |
|
|
Hi rix,
als Denkanstoß
Code: | do
k= inkey$
if k <>"" then Stringbasteln (MNE$=MNE$+k .... k="")
if timer > start + 5 * 60 then irgenwasspeichern (... start=TIMER)
loop bis Abbruchbedingung |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
rix
Anmeldungsdatum: 20.03.2007 Beiträge: 20
|
Verfasst am: 22.05.2007, 11:08 Titel: |
|
|
Danke danke danke! Das mit dem INKEY$ hat funktioniert
Ich findes es großartig wie mir hier immer geholfen wird!!! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 22.05.2007, 21:58 Titel: |
|
|
Sonst als Anregung an die Profis: Im UNIX/Linux-Betriebssystem verwende ich normalerweise select() für solche Dinge, um einen Prozess für eine bestimmte Zeit (timeout-Argument) schlafen legen zu können oder aus einer Input-Datei (tty, RS-232 oder TCP/IP-Socket) kommen Daten hinein.
Praktische Anwendung: Rasterbike-Server.
Weiss nun nicht, ob dieser Betriebssystemroutinenaufruf in einen hübschen :-) FreeBasic-Befehl verpackt ist. Vorteil: Wirklich 100% rechenzeitfreies Warten und gleichzeitig verzögerungsfreie Verarbeitung. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 01.06.2007, 22:57 Titel: |
|
|
Auch vielleicht noch eine Anregung: Der Befehl THREADCREATE.
Du lässt einen Thread laufen, der SLEEP 5 benutzen darf, und deine Datei permanent scannt. Währenddessen läuft dein Hauptprogramm völlig unbeindruckt weiter, kann User-Input bequem verarbeiten, und - sollte das wirklich nötig sein - kannst du auch den ugly INPUT benutzen
Viel Spaß damit
Have a nice day
Ciao
Dusky_Joe _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
|