Ich arbeite derzeit eine Funktion, die Text sammelt und es zu einem vollständigen Satz zusammenfügt. Sobald der Satz vollständig ist, möchte ich den formatierten Text an eine vorbereitete Funktion senden.Timer wird nicht zurückgesetzt [Xamarin bildet iOS] C#
Was ich getan habe, um dies zu erreichen, ist einen Timer zu erstellen, also wenn etwas nicht innerhalb von 5 Sekunden gesendet wird, möchte ich das Ereignis mit dem gesammelten Text auslösen.
Mit meinem aktuellen Code wird der Timer jedoch nie zurückgesetzt und das Ereignis wird nach 5 Sekunden ausgelöst, obwohl während dieser Zeit Text gesendet wurde, der den Timer zurücksetzen würde.
Das ist also die Funktion, die aufgerufen wird, wenn neuer Text eingegeben wird:
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);
}
Und wenn das Ereignis ausgelöst ich den vollständigen Text meiner anderen Funktion senden:
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 = "";
}
Aber mit diesem Code Der Timer wird nicht zurückgesetzt und das Ereignis wird immer nach 5 Sekunden ausgelöst, obwohl beginTimer
während dieser Zeitperiode aufgerufen wird.
Einfach nur neugierig, warum Sie .. mehrmals ein neues Timer-Objekt erstellen nicht da .. – MethodMan
die Post aktualisiert zu machen scheint (gleiches Problem bleibt jedoch) –