В моем приложении wp7.5 у меня есть блок, в котором мне нужно показать секундомер (скажем, 30,29,28...1,0). Я пробовал различные реализации для достижения этого, используя классы DispatchTimer и Timer, но ни одна из них не решила мою проблему.
Подход 1: вот фрагмент, который я использовал для DispatchTimer,
DispatcherTimer dt = new DispatcherTimer();
dt.Interval = new TimeSpan(0, 0, 1); // 1 second
dt.Tick += new EventHandler(dt_Tick);
for(int count=0;count<30;count++)
dt.Start();
void dt_Tick(object sender, EventArgs e)
{
// my UI control update here
}
в моей реализации события Tick я обновляю элемент управления пользовательского интерфейса со счетчиком времени. Я прочитал здесь несколько вопросов по той же теме, где галочка диспетчера никогда не срабатывает в некоторых сценариях из-за потока пользовательского интерфейса. Со мной случилось то же самое, событие тика никогда не срабатывало.
Подход 2: я попытался использовать класс System.Threading.Timer,
Timer timer = new Timer(TimerProc);
for(int count=0;count<30;count++)
timer.Change(1000, 0);
void TimerProc(object sender)
{
// my UI control update here
}
Ни один из моих подходов не работал. У меня может быть повторный вопрос, может ли кто-нибудь указать мне, где я делаю неправильно в коде?