3

ボタンがクリックされたときにイメージ ソースを設定する WPF アプリケーションがあります。15 秒経過したとします。これどうやってするの?Thread.sleep を使用しようとしましたが、すぐにソースがクリアされ、アプリケーションが 15 秒間一時停止されます

ここに私がその方法のために持っているものがあります

 private void btnCapture_Click(object sender, RoutedEventArgs e)
 {  
    imgCapture.Source = //my image source;

    Thread.Sleep(15000);
    imgCapture.Source = null;

 }

私も試してみました

 private void btnCapture_Click(object sender, RoutedEventArgs e)
  {  
    imgCapture.Source = //my image source;


    imgCapture.Source = null;
     Thread thread = new Thread(new ThreadStart(clearSource));
        thread.Start();

  }

    private void clearSource()
    {
        Thread.Sleep(15000);
        imgCapture.Source = null;
    }

しかし、別のスレッドが所有しているため、呼び出し元のスレッドがこのオブジェクトにアクセスできないというエラーが表示されます。
その画像ソースを 15 秒後にクリアするにはどうすればよいですか。ありがとう!

4

2 に答える 2

4

DispatcherTimerを使用します。

DispatcherTimer timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(15) };

    // in constructor
    timer.Tick += OnTimerTick;

private void btnCapture_Click(object sender, RoutedEventArgs e)
{
    imgCapture.Source = //my image source;
    timer.Start();
}

private void OnTimerTick(object sender, EventArgs e)
{
    timer.Stop();
    imgCapture.Source = null;
}
于 2013-01-24T21:29:40.060 に答える
0

@Clemensの回答は問題ありませんが、最近のRXフェティッシュを満たすために:

void btnCapture_Click(object sender, RoutedEventArgs e)
{
    imgCapture.Source = //my image source;
    Observable.Interval( TimeSpan.FromSeconds( 15 ) ).TimeInterval().Subscribe( _ => imgCapture.Source = null );
}
于 2013-01-24T21:59:20.050 に答える