如果在一定时间内没有更改文本,如何运行/取消事件? C#

时间:2017-05-09 20:49:14

标签: c# xamarin.ios

我试图在一段时间后运行一个方法,如果文本没有改变,如果它被改变,那么我不会重新启动“计时器”。

这就是我目前正在使用的。

首先我有一个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的内容,这可能是我要找的东西?

0 个答案:

没有答案