Servus, Wie kann ich C# eine art Abfrage mit einem Timer machen? Das Ganze soll so aussehen: Button 1 wird gedrückt, der Timer startet und der Button 1 wird gesperrt. Wenn Button 2 gedrückt wird bevor der Timer abläuft bleibt button 1 gesperrt. Wenn dieser fall nicht eintritt soll der Timer neu starten.. Danke im Voraus! Gruss Dani
Daniel R. schrieb: > Wenn Button 2 gedrückt wird bevor der Timer abläuft bleibt button 1 > gesperrt. Was passiert mit dem Timer wenn Button 2 gedrückt wird? > Wenn dieser fall nicht eintritt soll der Timer neu starten.. Was passiert mit Button 1 wenn der Timer abläuft? Und wenn er ein 2tes mal abläuft?
Wenn Button 2 gedrückt wird soll button 1 gespert werden Der Timer kann auch stoppen. Wenn Button 2 nicht gedrückt wird soll sich das ganze solang wiederholen bis button 2 gedrückt wird
Daniel R. schrieb: > Wenn Button 2 gedrückt wird soll button 1 gespert werden > Der Timer kann auch stoppen. Der ist doch schon durch den druck auf Button 1 gesperrt oder? Schreib mal auf was zu den jeweiligen Zuständen passieren soll, das packst Du dann in die jeweiligen Events: Ich gehe mal davon aus das ganze soll so ablaufen: Button 1 Clickevent - Button 1 sperren - Timer enable Button 2 Clickevent - Timer disable Timerevent - Timer disable - Button 1 freigeben
Das mag er nicht gibt ne exception... Cross-thread operation not valid: Control 'button1' accessed from a thread other than the thread it was created on."} System.Exception {System.InvalidOperationException}
1 | private void button1_Click(object sender, EventArgs e) |
2 | {
|
3 | aTimer.Enabled = true; |
4 | button1.Enabled = false; |
5 | }
|
6 | |
7 | private void button2_Click(object sender, EventArgs e) |
8 | {
|
9 | aTimer.Enabled = false; |
10 | }
|
11 | |
12 | private void timer_is_working(object source, ElapsedEventArgs e) |
13 | {
|
14 | aTimer.Enabled = false; |
15 | button1.Enabled = true; |
16 | }
|
Daniel R. schrieb: > Das mag er nicht gibt ne exception... > > Cross-thread operation not valid: Control 'button1' accessed from a > thread other than the thread it was created on."} System.Exception > {System.InvalidOperationException} Lies mal im C# Buch deines Vertrauens unter dem Stichwort 'Invoke' nach.
Daniel R. schrieb: > Wenn Button 2 gedrückt wird soll button 1 gespert werden > Der Timer kann auch stoppen. > > Wenn Button 2 nicht gedrückt wird soll sich das ganze solang wiederholen > bis button 2 gedrückt wird Versteh ich nicht. Wozu dann der Timer? Button 1 wird gesperrt, wenn Button 2 gedrückt wird. Was soll dann der Timer?
http://www.mycsharp.de/wbb2/thread.php?threadid=33113 Du könntest in deinem Fall vermutlich auch einfach System.Windows.Forms.Timer verwenden. Zum Problem selbst: Beschreibe doch nicht immer alles stückchenweise aus der Ameisenperspektive, sondern den Sinn und das Ziel dahinter. Hatte ich bereits erwähnt, dass es sinnvoll wäre, wenn du erst einmal ein Buch oder zumindest ausführliches Tutorial durcharbeiten würdest? Ja, ich glaube schon ... ;-)
Was der Invoker alles kann :D Funzt jetzt:
1 | private void timer_is_working(object source, ElapsedEventArgs e) |
2 | {
|
3 | try
|
4 | {
|
5 | if (InvokeRequired) |
6 | {
|
7 | Invoke(new MethodInvoker(do_some_gui_operation)); |
8 | }
|
9 | }
|
10 | catch
|
11 | {
|
12 | return; |
13 | }
|
14 | }
|
15 | |
16 | private void do_some_gui_operation() |
17 | {
|
18 | try
|
19 | {
|
20 | button1.Enabled = true; |
21 | }
|
22 | catch
|
23 | {
|
24 | return; |
25 | }
|
26 | }
|
Fräulein Eysenbarth schrieb: > Hatte ich bereits erwähnt, dass es sinnvoll wäre, wenn du erst einmal > ein Buch oder zumindest ausführliches Tutorial durcharbeiten würdest? > Ja, ich glaube schon ... ;-) Stimmt ja, lernen in der Schule C# allerdings nur langsamm.. Aber jetzt sind ja noch Ferien... da bin ich eher für die Learning by Doing methode...
Warum so ein Umstand mit invoke? Warum wird nicht einfach wie vorgeschlagen der System.Windows.Forms.Timer benutzt?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.