繁体   English   中英

C#计时器线程崩溃,BeginInvoke

[英]C# Timer thread crash, BeginInvoke

我有一个“ animateMyWindow”类,可以使用Timer更改打开的窗口的不透明度。

    namespace POCentury
{
    class animateMyWindow
    {
        Timer _timer1 = new Timer();
        Window _openedWindow = null;
        public void animationTimerStart(object openedWindow)
        {
            if (openedWindow == null)
            {
                throw new Exception("Hata");
            }
            else
            {
                _openedWindow = (Window)openedWindow;
                _timer1.Interval = 1 * 25;
                _timer1.Elapsed +=  new ElapsedEventHandler(animationStart);
                _timer1.AutoReset = true;
                _timer1.Enabled = true;
                _timer1.Start();
            }
        }
        private void animationStart(object sender, ElapsedEventArgs e)
        {
            if (_openedWindow.Opacity == 1)
                animationStop();
            else
                _openedWindow.Opacity += .1;
        }
        private void animationStop()
        {
            _timer1.Stop();
        }
    }
}

animationStart函数无法到达我的窗口,因为它正在其他线程上工作。 我已经尝试过Dispatcher.BeginInvoke,但无法使其正常工作。 你能帮我吗?

基本上,您无法访问animationStart事件内的openedWindow ,因为它发生在不同的线程中。 您需要分派器执行此操作。

Dispatcher.BeginInvoke(new Action(() =>
{
        if (_openedWindow.Opacity == 1)
                animationStop();
            else
                _openedWindow.Opacity += .1;
}));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM