問題
別のスレッドから StoryBoard を再生しようとしていますが、WindowsBase.dll で「System.InvalidOperationException」がスローされます。
InfoBar
私はそれを閉じるための StoryBoard と、System.Timers.Timer
数秒後にそうするためのオブジェクトを持つカスタム Control を持っています。
BeginStoryboard()
では、別のスレッドから呼び出すにはどうすればよいでしょうか。
エラーメッセージ
でスローされた例外BeginStoryboard(sb)
:
An exception of type 'System.InvalidOperationException' occurred in WindowsBase.dll but was not handled in user code
Additional information: The calling thread cannot access this object because a different thread owns it.
私の(簡略化された)コード
private int TimerSeconds;
private System.Timers.Timer t;
public InfoBar()
{
this.InitializeComponent();
TimerSeconds = 0;
t = new System.Timers.Timer(1000);
t.Elapsed += t_Elapsed;
}
void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if(TimerSeconds==3)
{
t.Stop();
TimerSeconds = 0;
System.Windows.Media.Animation.Storyboard sb = (System.Windows.Media.Animation.Storyboard)FindResource("sbClose");
BeginStoryboard(sb);
}
else
{
TimerSeconds++;
}
}