2016-07-19 4 views
-4

У меня есть таймер, который начинает отсчет, когда определенное событие (someEvent) происходит в течение одной секунды, если событие снова запущено в течение этой секунды, я хочу, чтобы первый таймер остановился и начал отсчет снова от 0 Я попытался это:таймер не содержит определения «change»

void someEvent (object sender, TextChangedEventArgs e) 
     { 

      aTimer = new System.Timers.Timer(); 
      aTimer.Change(5000, 0); 
      aTimer.Elapsed += OnTimedEvent; 
      aTimer.AutoReset = true; 

      aTimer.Enabled = true; 

     } 

определение таймера в MainWindow:

private System.Timers.Timer aTimer; 

Согласно этому C# Timer.Change Method

Но я получаю сообщение об ошибке в вопросе aTimer.Change: «Таймер не содержит определения« Изменить ».»

Это было реализовано с использованием WPF.

+3

Похоже 'Change()' метод на [ 'System.Threading.Timer'] (HTTPS : //msdn.microsoft.com/en-us/library/system.threading.timer (v = vs.110) .aspx) в отличие от класса System.Timers.Timer. –

+2

Если вы используете WPF (и хотите, чтобы таймер запускался в потоке пользовательского интерфейса), вам может потребоваться перейти на ['System.Windows.Threading.DispatcherTimer'] (https://msdn.microsoft.com/en- us/library/system.windows.threading.dispatchertimer (v = vs.110) .aspx) –

+4

Два общих решения для этого типа проблем: a) используют класс, который вы читаете для документации, или b) читаете [ документация для используемого класса] (https://msdn.microsoft.com/en-us/library/system.timers.timer (v = vs.110) .aspx). Оба работают хорошо. Однако в некоторых случаях мы обнаруживаем, что мы используем неправильный класс и читаем документацию для другого неправильного класса. Это может быть очень запутанным. –

ответ

1

Namespaces Matter

.NET имеет довольно много таймеров классов, каждый из которых имеет свои собственные конкретные функциональные возможности и открытые методы, поэтому легко может запутаться между пространствами имен (поскольку большинство классов называются только Timer).

В настоящее время вы используете класс System.Timers.Timer, который в основном состоит из Start() и Stop() методов. Если вы хотите метод Change(), вы должны использовать вместо этого экземпляра из System.Threading.Timer класса:

// Declare the timer as the other type of timer 
aTimer = new System.Threading.Timer(); 
0

Ваш System.Timers.Timer. Этот таймер не имеет Change Method

Timer.Change() событие используется в System.Threading.TimerTimer.Change

Смежные вопросы