Diskuze: Jak stopnout timer z jiné metody

C# .NET .NET (C# a Visual Basic) Jak stopnout timer z jiné metody American English version English version

Avatar
NeonMaster
Člen
Avatar
NeonMaster:

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:

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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 21.4.2015 16:57
Avatar
NeonMaster
Člen
Avatar
Odpovídá na Skelag
NeonMaster:

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

 
Nahoru Odpovědět  ±0 21.4.2015 17:06
Avatar
Odpovídá na NeonMaster
Michal Žůrek (misaz):

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  +1 21.4.2015 17:46
Nesnáším {}, proto se jim vyhýbám.
Avatar
NeonMaster
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
NeonMaster:

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.