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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren