ERLEDIGT
NEIN
NEIN
ANTWORTEN
22
22
ZUGRIFFE
676
676
EMPFEHLEN
-
08.12.10 17:46 #1
- Registriert seit
- May 2009
- Beiträge
- 54
Hallo,
ich habe im Moment das Problem das mein Timer nicht ganz meinen Befehlen Folgt oder ich einfach was Falsch gemacht habe, ein Freund sagte mir das mit Multithreading das Programm um einiges schneller läuft als mit einem Timer.
Problemstellung in dem Timer:
Der Timer von mir ist zu ständing um eine bestimme Aktion auszuführen, diese Aktion Funktioniert recht gut doch der Harken an der sache ist das wenn diese Aktion durch geführt wurde pausiert die Aktion für mind. 10-15 Sekunden und es passiert garnichts, nach den 10-15Sekunden kommt "Blacklisting TEXT for a while".
ich muss dazu sagen das der Auslöser von dem Timer mehrmal's ausgelöst wird, daher auch totalTime.
der Timer wird ausgelöst wenn bestimmte Bestimmungen gegeben sind z.B. wenn in einer Textbox ein bestimmter Text eingegeben wurde.
hier der Code von dem Timer:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
private void doCheck_Tick(object sender, EventArgs e) { if (!imready()) { TimeSpan totalTime = DateTime.Now - time; if (totalTime.TotalSeconds < 15) { if (TextExist(currentText)) { if (!lowercase()) { Thread.Sleep(500); Interact(currentTextIndex); doCheck.Interval = 2600; } else { Interact(currentTextIndex); doCheck.Interval = 100; } } else { texts++; doCheck.Enabled = false; } } } else { Log.Output(String.Format("Blacklisting {0} for a while.", currentText)); blacklist.Add(currentText); doCheck.Enabled = false; } }
ich wäre auch zufrieden wenn mir jemand das Timer Problem löst.
-
Hallo,
mit einem Timer sollten nur regelmäßig wiederkehrende Aktionen ausgeführt werden.
Was meinst du damit? Rufst du öfter Start() / Stop() auf? Mir ist nicht ganz klar, wofür du denTimer brauchst - kannst du mit dem Auslöser die entsprechende Aktion nicht gleich direkt ausführen?ich muss dazu sagen das der Auslöser von dem Timer mehrmal's ausgelöst wird, daher auch totalTime.
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
08.12.10 20:56 #3
- Registriert seit
- May 2009
- Beiträge
- 54
du musst dir das so vorstellen, es wird immer geprüft ob z.B. der Text Groß geschrieben wurde jedesmal wenn dies der Fall ist wird der Timer Enabled und bekommt ein Interval sprich Zeit zum runterlaufen.
sobald das programm bei doCheck ankommt hat totalTime eine Zeit von mind. 14Sekunden.
-
Du willst also auf die entsprechenden Ereignisse zeitverzögert reagieren? Mir ist trotzdem noch nicht ganz klar, wofür der Timer gut ist, also welches Konzept bzw. Idee hinter dieser Verzögerung steckt. Ich denke, die Probleme enstehen dadurch, dass du in den verschiedenen Situationen an den Timer-Parametern drehst.
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
08.12.10 21:57 #5
- Registriert seit
- May 2009
- Beiträge
- 54
ich muss darauf etwas verzögert reagieren, aber dies sollte nich länger als 1-2 Sekunden sein aber derzeitig ist die warte Zeit nach dem der Timer einmal ausgelöst wurde 14Sekunden bis er das nechste Ausführt
-
Hi,
ich versteh das Problem so eigentlich auch nicht so ganz.
Du prüfst mittels des Timers ob Buchstaben Groß oder Klein geschrieben wurden.
Wenn ich dich richtig verstanden hab, dann willst du periodisch prüfen, ob der Text anders ist?
Wenn ja, nimm doch einfach das Event Textchanged.
mfg
Wensi
-
08.12.10 22:31 #7
- Registriert seit
- May 2009
- Beiträge
- 54
sicher könnte ich das nehmen wenn ich dies vorhätte, der Code ist abgeändert er führt in wirklichkeit etwas ganz anderes aus d.h. ist die Funktion die dort beinhaltet ist realativ egal derzeitig, Problem ist das er bei jedem ausgeführten Timer Event jedesmal 14Sekunden Pausiert und dann "Blacklisted" in die Textbox schreibt und dann das nechste in dem doCheck durchführt.
-
Du hast da ja dieses stehen
Das heißt der Output wird erst dann geschrieben, wenn 15 Sekunden vorbei sind.Code csharp:1
if (totalTime.TotalSeconds < 15) { ... } else { Log.Output (...); }
Was meinst du mit "er pausiert 14 Sekunden bei jedem Timer-Event"? Wird das nächste Event erst nach 14 Sekunden aufgerufen oder pausiert/hängt der Code im Timer-Event für 14 Sekunden?hihi = -h²
-
09.12.10 15:52 #9
- Registriert seit
- May 2009
- Beiträge
- 54
sobald der Timer Enabled wird und sein Interval bekommen hat startet er die Funktion im inneren des Timers, er führt diese Funktion Einmal aus und beendet sie, dann Pausiert der Timer 14 Sekunden können aber auch 15 Sekunden sein, dann Schreibt er "Blacklisted" in die Textbox und führt das das nechste in dem Timer aus.
ich tendiere eher dazu das der Code im Timer-Event hängen bleibt die 14 Sekunden.
-
"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
09.12.10 16:29 #11
- Registriert seit
- May 2009
- Beiträge
- 54
habe noch nie mit der Stopwatch-Klasse gearbeit oder gar kenne sie, hättest du einen Link wo sie beschrieben wird?
-
Einfach die Referenz dazu in der MSDN suchen. Einen Link habe ich aber auch: http://msdn.microsoft.com/de-de/libr...stopwatch.aspx
"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
09.12.10 16:38 #13
- Registriert seit
- May 2009
- Beiträge
- 54
was jetzt noch Interressant zu wissen wäre ist, wo ich das rein packen soll, in den Auslöser oder in den Timer?
Edit habe es nun einfach am Anfang und am Ende des Timers gepackt.
hier das Result:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
16:52:58 00:00:00.16 16:52:58 00:00:00.20 16:52:58 00:00:00.20 16:52:59 00:00:00.15 16:52:59 00:00:00.24 16:52:59 00:00:00.08 16:52:59 00:00:00.11 16:52:59 00:00:00.18 16:52:59 00:00:00.22 16:53:00 00:00:00.30 16:53:00 00:00:00.21 16:53:00 00:00:00.26 16:53:01 00:00:00.24 16:53:01 00:00:00.27 16:53:01 00:00:00.24 16:53:01 00:00:00.18 16:53:02 00:00:00.27 16:53:02 00:00:00.20 16:53:02 00:00:00.22 16:53:02 00:00:00.09 16:53:03 00:00:00.19 16:53:03 00:00:00.38 16:53:03 00:00:00.18 16:53:03 00:00:00.23 16:53:04 00:00:00.29 16:53:04 00:00:00.20 16:53:04 00:00:00.18 16:53:04 00:00:00.19 16:53:05 00:00:00.20 16:53:05 00:00:00.16 16:53:05 00:00:00.19 16:53:05 00:00:00.17 16:53:06 00:00:00.30 16:53:06 00:00:00.20 16:53:06 00:00:00.18 16:53:06 00:00:00.19 16:53:07 00:00:00.23 16:53:07 00:00:00.28 16:53:07 00:00:00.19 16:53:07 00:00:00.18 16:53:08 00:00:00.24 16:53:08 00:00:00.29 16:53:08 00:00:00.20 16:53:08 00:00:00.17 16:53:09 00:00:00.16 16:53:09 00:00:00.28 16:53:09 00:00:00.20 16:53:09 00:00:00.17 16:53:09 00:00:00.18 16:53:10 00:00:00.36 16:53:10 00:00:00.27 16:53:10 00:00:00.19 16:53:11 00:00:00.19 16:53:11 00:00:00.29 16:53:11 00:00:00.19 16:53:11 00:00:00.17 16:53:12 00:00:00.17 16:53:12 00:00:00.30 16:53:12 00:00:00.17 16:53:12 00:00:00.20 16:53:13 00:00:00.21 16:53:13 Blacklisting xyz for a while. 16:53:13 00:00:00.01 16:53:13 00:00:00.09 16:53:14 00:00:00.22 16:53:14 00:00:00.32 16:53:14 00:00:00.24 16:53:15 00:00:00.21 16:53:15 00:00:00.19 16:53:15 00:00:00.25 16:53:15 00:00:00.19 16:53:15 00:00:00.17 16:53:16 00:00:00.20 16:53:16 00:00:00.30 16:53:16 00:00:00.18 16:53:17 00:00:00.19 16:53:17 00:00:00.16 16:53:17 00:00:00.11 16:53:17 00:00:00.18 16:53:17 00:00:00.18 16:53:17 00:00:00.18 16:53:18 00:00:00.22 16:53:18 00:00:00.21 16:53:18 00:00:00.24 16:53:18 00:00:00.19 16:53:19 00:00:00.19 16:53:19 00:00:00.25 16:53:19 00:00:00.19
Geändert von CrimeTime89 (09.12.10 um 16:54 Uhr)
-
Teste erstmal die Methode 'doCheck_Tick' und ziehe den Kreis dann größer. Evt. wäre es auch hilfreich nur erstmal einen einzigen Auslöser zu haben und zu prüfen, wie sich der Ablauf da verhält.
"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
09.12.10 17:04 #15
- Registriert seit
- May 2009
- Beiträge
- 54
also hier der Log.Output von dem Auslöser.
Code :1 2 3 4 5 6
17:02:02 00:00:00.00 17:02:02 00:00:00.00 17:02:02 00:00:00.00 17:02:02 00:00:00.00 17:02:03 00:00:00.01 17:02:18 Blacklisting xyz for a while.
Ähnliche Themen
-
<Tag> durch \n ersetzen
Von Transmitter im Forum XML TechnologienAntworten: 8Letzter Beitrag: 29.06.09, 08:20 -
& durch & ersetzen
Von karl123 im Forum PHPAntworten: 12Letzter Beitrag: 06.05.09, 12:45 -
WIN32:Programmabsturz vllt durch Timer?
Von Mr Apfelkuchen im Forum C/C++Antworten: 1Letzter Beitrag: 09.07.08, 23:39 -
getchar() soll durch timer beendet werden
Von Huemler im Forum C/C++Antworten: 3Letzter Beitrag: 28.08.07, 13:50 -
'' ersetzen durch ','
Von downset04 im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 2Letzter Beitrag: 17.10.06, 15:32





Zitieren

Login





