Jos*_*eph 2 c# wpf time asynchronous delay
我有一个自定义控件(继承自TextBox),我正在使用.NET 4.0.
我需要做的是在用户完成输入后执行一些代码,例如在他停止输入后一秒钟.
每次Text更改时我都无法执行此代码块,这是为了提高效率,因为它有点耗时.理想情况下,每次用户启动和停止键入时都应调用一次.我以开始秒表的Restart()内部OnTextChanged方法.
这是我的设置:
public class MyBox : TextBox
{
private readonly Stopwatch timer;
protected override void OnTextChanged(TextChangedEventArgs e)
{
timer.Restart();
base.OnTextChanged(e);
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能有效地做到这一点?异步线程的答案是什么?或者还有其他方式吗?
您可以轻松地使用DispatcherTimer:
public class MyBox : TextBox
{
private readonly DispatcherTimer timer;
public MyBox()
{
timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(1) };
timer.Tick += OnTimerTick;
}
protected override void OnTextChanged(TextChangedEventArgs e)
{
timer.Stop();
timer.Start();
}
private void OnTimerTick(object sender, EventArgs e)
{
timer.Stop();
// do something here
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3139 次 |
| 最近记录: |