Timer in C# mit abfrage

OP #4256341
Lesenswert?
• ▲
▼
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
Gast #4256350
Lesenswert?
• ▲
▼
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?
Gast #4256364
Lesenswert?
• ▲
▼
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
OP #4256422
Lesenswert?
• ▲
▼
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
        }
Gast #4256450
Lesenswert?
• ▲
▼
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 ... ;-)
OP #4256461
Lesenswert?
• ▲
▼
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...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.