计时器未重置 [Xamarin 表单 iOS] C#



我目前正在研究一个收集文本并将其组合成完整句子的函数。句子完成后,我想将格式化的文本发送到准备好的函数。

为了实现这一点,我所做的是创建一个计时器,因此当某些内容在 5 秒内未发送时,我希望触发带有收集文本的事件。

但是,使用我当前的代码,计时器永远不会重置,并且事件会在 5 秒后触发,即使在此时间段内发送的文本会重置计时器。

所以这是输入新文本时调用的函数:

string result = "";
Timer time;
public void beginTimer(string text)
{ 
result = result + " " + text;
time.Stop();
time = new Timer(5000); 
time.Enabled = true;
time.AutoReset = false;
time.Start();
time.Elapsed += new ElapsedEventHandler(timer_Elapsed);
}

一旦事件触发,我将完整的文本发送到我的其他函数:

public event EventHandler<EventArgsSentence> textChanged;
private async void timer_Elapsed(object sender, ElapsedEventArgs e)
{
time = (Timer)sender;
time.Stop();
time.Enabled = false;
textChanged.Invoke(this, new EventArgsSentence(result));
result = "";
}

但是使用此代码,计时器不会重置,并且事件始终在 5 秒后触发,即使在此时间段内调用beginTimer也是如此。

试试这个停止计时器

time.Invalidate ();
time.Dispose ();
time = null;

最新更新