PopupNotifier не работает в классе таймера - PullRequest
0 голосов
/ 12 сентября 2018

PopupNotifier не работает, когда он помещен внутри timer class, если мы поместим PopupNotifier вне класса таймера, он будет работать нормально для меня, следующий код используется для этого.

public MainWindow()
        {
            InitializeComponent();
            bool needToShowInTaskbar = this.ShowInTaskbar;
            WindowState initialWindowState = this.WindowState;
             // making window invisible
            this.ShowInTaskbar = false;
            this.WindowState = WindowState.Minimized;
             // showing and hiding window
            this.Show();
            this.Hide();
             // restoring original settings
            this.ShowInTaskbar = needToShowInTaskbar;
            this.WindowState = initialWindowState;
            SetTimer();
     }

     private  void SetTimer()
            {
                m_mainTimer = new System.Timers.Timer();
                m_mainTimer.Interval = 60000;   // every one min
                m_mainTimer.Elapsed += m_mainTimer_Elapsed;
                m_mainTimer.AutoReset = false;  // makes it fire only once
                m_mainTimer.Start(); // Start
                m_timerTaskSuccess = false;
            }

        private void m_mainTimer_Elapsed(Object source, ElapsedEventArgs e)
            {
               try
                {
                    LoadData();
                    PopupNotifier popup = new PopupNotifier();
                    popup.TitleText = joomla.subject;
                    popup.ContentText = joomla.body;
                    popup.Popup();
                    m_timerTaskSuccess = true;
                }
                catch (Exception ex)
                {
                    m_timerTaskSuccess = false;
                }
                finally
                {
                    if (m_timerTaskSuccess)
                    {
                        m_mainTimer.Start();
                    }
                }
            }

1 Ответ

0 голосов
/ 12 сентября 2018

При изменении таймера на System.Windows.Threading.DispatcherTimer он хорошо работает для меня.

 private  void SetTimer()
        {
            dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
            dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);

            dispatcherTimer.Interval = new TimeSpan(0, 0, 60);
            dispatcherTimer.Start();

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...