NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Jak stopnout timer z jiné metody

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
NeonMaster
Člen
Avatar
NeonMaster:21.4.2015 16:22

Ahoj. První přiložím kód:

public void metoda(object sender, EventArgs e)
       {
           Promena promene = new Promena();
           bar1.Value++;
           if (promene.tovarna == 0 && bar1.Value >= 100)
           {
               promene.tovarna = 1;
               promene.tovarna2 = true;
               image2.Visibility = Visibility.Visible;
               tabtovarna.Visibility = Visibility.Visible;
               System.Threading.Thread.Sleep(3000);
               bar1.Value = 0;
           }
       }
      public void Button_Click(object sender, RoutedEventArgs e)
       {
           System.Windows.Threading.DispatcherTimer timer1 = new System.Windows.Threading.DispatcherTimer();
           timer1.Tick += new EventHandler(metoda);
           timer1.Interval = new TimeSpan(0, 0, 1);
           timer1.Start();
       }

Jde o to že když kliknu na talčítko spustí se timer který začne plnit Progressbar ten se potom naplní a já chci aby byl prázdný ale i když v progress baru nechám value 0 tak timer pořád jede takže se zase začne plnit.
A já potřebuji aby se ten timer stopnul vím že je to pomocí timer1.Stop(); ale to nejde protože ten timer se nepřenáší mezi metodami. Jak mám sdílet ten timer mezi metodami abych ho pak mohl stopnout z jiné metody než ve které jsem ho vytvořil?

 
Odpovědět
21.4.2015 16:22
Avatar
Skelag
Člen
Avatar
Odpovídá na NeonMaster
Skelag:21.4.2015 16:57

Musíš timer vytvořit mimo metody :)

        public MainWindow()
        {
            InitializeComponent();
        }
System.Windows.Threading.DispatcherTimer timer1 = new System.Windows.Threading.DispatcherTimer();
public void metoda(object sender, EventArgs e)
        {
            Promena promene = new Promena();
            bar1.Value++;
            if (promene.tovarna == 0 && bar1.Value >= 100)
            {
                promene.tovarna = 1;
                promene.tovarna2 = true;
                image2.Visibility = Visibility.Visible;
                tabtovarna.Visibility = Visibility.Visible;
                System.Threading.Thread.Sleep(3000);
                bar1.Value = 0;
            }
        }
       public void Button_Click(object sender, RoutedEventArgs e)
        {
            timer1.Tick += new EventHandler(metoda);
            timer1.Interval = new TimeSpan(0, 0, 1);
            timer1.Start();
        }
       public void Button2_Click(object sender, RoutedEventArgs e)
        {
            timer1.Stop();
        }
Editováno 21.4.2015 16:57
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
21.4.2015 16:57
Avatar
NeonMaster
Člen
Avatar
Odpovídá na Skelag
NeonMaster:21.4.2015 17:06

A když jsem ti psal tak si mi to říct nemohl...

 
Nahoru Odpovědět
21.4.2015 17:06
Avatar
Odpovídá na NeonMaster
Michal Žůrek - misaz:21.4.2015 17:46

na řešení problémů tu je fórum, takže to že ti v PM/chatu neodpověděl je v pořádku.

 
Nahoru Odpovědět
21.4.2015 17:46
Avatar
NeonMaster
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
NeonMaster:22.4.2015 7:17

Je to trochu jinak ale to tady nebudu řešit.

 
Nahoru Odpovědět
22.4.2015 7:17
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.