Wpf x秒后删除图像源
我有一个WPF应用程序,它将在单击按钮时设置图像源 我想在这么多秒后清除图像源,比如说15秒过去了。 我该怎么做? 我曾尝试使用Thread.sleep,但它会立即清除源代码,然后暂停应用程序15秒 以下是我对这种方法的看法Wpf x秒后删除图像源,wpf,multithreading,Wpf,Multithreading,我有一个WPF应用程序,它将在单击按钮时设置图像源 我想在这么多秒后清除图像源,比如说15秒过去了。 我该怎么做? 我曾尝试使用Thread.sleep,但它会立即清除源代码,然后暂停应用程序15秒 以下是我对这种方法的看法 private void btnCapture_Click(object sender, RoutedEventArgs e) { imgCapture.Source = //my image source; Thread.Sleep(15000)
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秒后清除该图像源。 谢谢 使用:
@克莱门斯的回答很好,但为了满足我最近的迷恋:
30000是3秒,因此您应该将其设置为150000毫秒不是问题15000或150000是无关的,因为它在任何时间内都不起作用。30000毫秒是3秒?这对我来说是新的,谢谢你的更新。谢谢!如果应用程序运行了一整天并多次单击该按钮,这会导致任何问题吗?我需要处理计时器还是一切正常?不,如果在15秒结束前单击按钮,您只能重置/重新启动计时器:-)无需处理,因为您始终只使用一个计时器对象。很好,我听到一些接收嗡嗡声。我想我也应该去看看。谢谢
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;
}
void btnCapture_Click(object sender, RoutedEventArgs e)
{
imgCapture.Source = //my image source;
Observable.Interval( TimeSpan.FromSeconds( 15 ) ).TimeInterval().Subscribe( _ => imgCapture.Source = null );
}