Привет, я вмешался в некоторые проблемы, связанные с таймером. надежда кто-то может помочь ..Запустите таймер из другой темы в C#
- У меня есть форма окна, содержащий кнопку
- , когда я нажимаю на эту кнопку я начинаю параметризованные нить
Thread thread1 = new Thread(new ParameterizedThreadStart(execute2));
thread1.Start(externalFileParams);
- код внутри потока выполняется очень хорошо
- на последней строке этой темы i запускает таймер
.
public void execute2(Object ob)
{
if (ob is ExternalFileParams)
{
if (boolean_variable== true)
executeMyMethod();//this also executes very well if condition is true
else
{
timer1.enabled = true;
timer1.start();
}
}
}
}
5, но клещ событие таймера не выстрелил
Я работаю на VS2008 3.5 рамки. Я перетащил таймер с панели инструментов и установите его Interval
300 также попытался установить Enabled
истина/ложь метод timer1_Tick(Object sender , EventArgs e)
, но его не выпустили
кто-нибудь может предложить то, что я делаю неправильно?
Это маловероятно, что это лучший способ достичь того, что вы хотите - если у вас есть долговременная задача, которая должна обновлять форму с прогрессом, то BackgroundWorker - это хороший способ сделать это. Если вам нужно больше ручного управления, то поток потока (посмотрите на ThreadPool.QueueUserWorkItem) лучше, чем создание собственного потока. –
вам нужно будет вызвать timer.start в потоке своей формы/управления хостом, но это неудобный способ сделать это. Используйте 'Control.BeginInvoke' для вызова соответствующего делегата. – Jodrell