我试图在一段时间后运行一个方法,如果文本没有改变,如果它被改变,那么我不会重新启动“计时器”。
这就是我目前正在使用的。
首先我有一个while循环,如果添加了任何文本,它会不断调用我的TextChanged
事件:
TextChanged(result); //result is the added text
然后我在这里收到它:
string result = "";
public async void TextChanged(string text)
{
result = result + text;
}
我不断在字符串中添加文字。现在我想要实现的是如果在5秒内没有添加新文本我想运行一个带有文本最终结果的函数:
public event EventHandler<EventArgsMethod> textChanged;
textChanged?.Invoke(this, new EventArgsMethod(result));
现在我试图将所有部分放在一起,我试图做的事情我认为理论上会起作用(但是一个糟糕的解决方案)是这段代码:
string result = "";
int timercheck = 0;
public async void TextChanged(string text)
{
if (result.Split(' ').Last() == text)
{
if (timercheck == 0)
{
await Task.Delay(1500);
timercheck = 1;
TextChanged (null);
}
else if (timercheck == 1)
{
await Task.Delay(1500);
timercheck = 2;
TextChanged (null);
}
else if (timercheck == 2)
{
await Task.Delay(1500);
timercheck = 3;
TextChanged (null);
}
else
{
textChanged?.Invoke(this, new EventArgsMethod(result));
TextChanged (null);
}
}
else
{
result = result + text;
}
}
所以我试图回忆的方法是查看是否添加了新文本,但是这个糟糕的解决方案让我崩溃了,因为它在几秒钟内被调用了20次。
如果文本在一定时间内没有更改,如何运行事件?我读了一些关于System.Timers
的内容,这可能是我要找的东西?