1

問題

別のスレッドから 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++;
    }
}
4

1 に答える 1