Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Expression Blend 3 таймер (Timer) 
:(
    Опции темы
NOHEAD
  Дата 2.6.2010, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.6.2010

Репутация: нет
Всего: нет



Приветствую всех.
Делаю небольшое WPF приложение в Expression Blend 3.
В окне есть объект Grid с именем "UpPanel"
Вешаю на окно при MouseMove обработчик:
Код

private void mouseMove(object sender, System.Windows.Input.MouseEventArgs e)
        {
            UpPanel.Visibility=Visibility.Visible; 
                        
            myTimer.Elapsed += new ElapsedEventHandler( TimerStop );
            myTimer.Interval=1000;
            myTimer.Enabled = true; 
            myTimer.Start();
                    
        }

public void TimerStop(object source, ElapsedEventArgs e)
        {
            
            UpPanel.Visibility=Visibility.Hidden;
            MessageBox.Show("StopTimer");
            myTimer.Stop();
            
        }


В итоге при движении мышки включается таймер и после Одной Секунды должна пропадать UpPanel
 и выскакивать MessageBox.
Но ничего не происходит.
Но если я меняю местами строки в функции "TimerStop" и делаю так:
Код

public void TimerStop(object source, ElapsedEventArgs e)
        {
            MessageBox.Show("StopTimer");
            UpPanel.Visibility=Visibility.Hidden;
            myTimer.Stop();
            
        }

то MessageBox выскакивает, а панель так и не пропадает, и ошибка не вылезает никакая.
В итоге строка UpPanel.Visibility=Visibility.Hidden; (и всё что после неё) не срабатывает в функции TimerStop, 
но если её перенести в функцию "mouseMove", то она работает чётко.

Почему так, кто может объяснить?
PM MAIL   Вверх
NOHEAD
Дата 3.6.2010, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.6.2010

Репутация: нет
Всего: нет



В общем решение найдено.
Класс System.Timers.Timer тупит, ну или я чего то не понимаю.

Помог другой таймер: System.Windows.Threading.DispatcherTimer;
Вот пример:

Код

using System.Windows.Threading;

public partial class MainWindow : Window
    {
                
        DispatcherTimer dispatcherTimer = new DispatcherTimer();

public MainWindow()
        {
                                    
            dispatcherTimer.Tick += new EventHandler(TimerStop);
                 dispatcherTimer.Interval = new TimeSpan(0, 0, 5);
            dispatcherTimer.Start();
          
        }

private void TimerStop(object sender, EventArgs e)
        {
            //Тут уже работает всё что угодно, даже UpPanel.Visibility=Visibility.Hidden;
            dispatcherTimer.Stop();
                        
        }

}


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0384 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.