c# Stopky (STOP nebo PAUSE)
Zdravím,
udělal jsem si v c# winform stopky, zapnout mi jdou, ale nevím, jak udělat aby se zastavili (pause) a když dám zase start, tak aby jeli dál něco jako resume.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Diagnostics;
namespace Pocitadlo
{
public partial class Form1 : Form
{
public int test = 0, mins, secs;
Thread stopky;
public Form1()
{
InitializeComponent();
}
public void START_Click(object sender, EventArgs e)
{
if (START.Text == "START")
{
START.Text = "STOP";
cas.Enabled = true;
stopky = new Thread(starter);
stopky.Start();
}
else
{
START.Text = "START";
cas.Enabled = false;
}
}
public void starter()
{
for (secs = 0; secs <= 59; secs++)
{
Thread.Sleep(200);
if (mins < 9 && secs < 9)
{
cas.BeginInvoke(new Action (() => cas.Text = String.Format("0{0}:0{1}", mins, secs)));
}
else if (mins < 9)
{
if (secs == 59)
{
mins++;
cas.BeginInvoke(new Action(() => cas.Text = String.Format("0{0}:00", mins)));
secs = 0 - 1;
}
else
{
cas.BeginInvoke(new Action(() => cas.Text = String.Format("0{0}:{1}", mins, secs)));
}
}
}
}
}
}
Mrkni třeba na tento příklad: stopwatch
Děkuju, to jsem také našel, fungovalo to dobře, ale mělo to háček, neukazoval se průběh času, ale až ten konečnej, když si dalo tlačítko stop.
Udělej si na ty stopky vlastní třídu. Cpát to takhle všechno do jedné, je hnus.
Čas sa nemeria tak, že uspíš vlákno na nejaký časový interval a potom ten interval pripočítaš, pretože to je veľmi nepresné.
Pozri sa na triedy Timer a StopWatch.
Pri spustení spustíš Timer aj StopWatch. Na udalosť Timer.Tick budeš zobrazovať čas nameraný triedou StopWatch. Pri zastavení vypneš Timer a zastavíš StopWatch. Pri opätovnom spustení opäť obidve spustíš.