我有一个“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并且无法使其正常工作。 你可以帮我这么做吗?
答案 0 :(得分:0)
基本上,您无法访问openedWindow
事件中的animationStart
,因为它发生在其他线程中。您需要Dispatcher才能这样做。
Dispatcher.BeginInvoke(new Action(() =>
{
if (_openedWindow.Opacity == 1)
animationStop();
else
_openedWindow.Opacity += .1;
}));