Sie können einen System.Timers.Timer verwenden: Setzen Sie AutoReset auf false und verwende Start / Stop-Methoden und erstelle einen Handler für das Elapsed-Ereignis.
Gibt es eine einfache Lösung / Idee / Strategie, um eine setTimeout-äquivalente Funktion in einer WinForms-App zu erstellen? Ich bin hauptsächlich ein Webentwickler, bin mir aber nicht sicher, wie ich das in einer WinForms App angehen würde. Grundsätzlich habe ich ein Textfeld, und nach jedem Tastendruck möchte ich eine Aufgabe ausführen, um eine Liste zu füllen (wie ein Auto-Vervollständigen-Ding), aber in der Lage sein, (z. B. clearTimeout) abzubrechen, wenn der Benutzer Zeichen eingibt ...
Meine einzige Vermutung ist vielleicht, einen BackGroundWorker zu verwenden und ihn anfangs schlafen zu lassen, und während er schläft, könnte er abgebrochen werden, wenn der Benutzer die Schlüsseleingabe beendet und der Schlafzeitraum endet, geht er und führt die Aufgabe usw. aus / p>
(es ist mir egal, ob ein Beispiel C # oder Vb.Net ist)
Sie können einen System.Timers.Timer verwenden: Setzen Sie AutoReset auf false und verwende Start / Stop-Methoden und erstelle einen Handler für das Elapsed-Ereignis.
Gibt es eine einfache Lösung / Idee / Strategie, um eine setTimeout-äquivalente Funktion in einer WinForms-App zu erstellen? Ich bin hauptsächlich ein Webentwickler, bin mir aber nicht sicher, wie ich das in einer WinForms App angehen würde. Grundsätzlich habe ich ein Textfeld, und nach jedem Tastendruck möchte ich eine Aufgabe ausführen, um eine Liste zu füllen (wie ein Auto-Vervollständigen-Ding), aber in der Lage sein, (z. B. clearTimeout) abzubrechen, wenn der Benutzer Zeichen eingibt ...
Meine einzige Vermutung ist vielleicht, einen BackGroundWorker zu verwenden und ihn anfangs schlafen zu lassen, und während er schläft, könnte er abgebrochen werden, wenn der Benutzer die Schlüsseleingabe beendet und der Schlafzeitraum endet, geht er und führt die Aufgabe usw. aus / p>
(es ist mir egal, ob ein Beispiel C # oder Vb.Net ist)
Ich weiß, dass dies eine alte Frage ist, aber eine alternative Lösung wäre, %code% zu verwenden.
oder es gibt %code%
Dies ist mein Weg, benutze C # 7.0 Syntax-Funktion. Einige unterscheiden sich mit js, wenn Timeout-Aktion ausgeführt wird und dann nicht gelöscht werden kann.
%Vor%Ich würde empfehlen, reaktive Programmierung dafür zu verwenden. Siehe Ссылка für die Reactive Extensions für .NET und Ссылка für die allgemeinen Informationen über Reaktive Programmierung.
Ich fürchte, ich kenne nur die reaktive JavaScript-Bibliothek, daher kann ich Ihnen kein C-Sharp-Beispiel geben, aber in JavaScript würde es etwa so funktionieren:
%Vor%Mithilfe eines solchen Setups können Sie Operatoren verketten, um alle Arten von Ereignissen von einer Quelle zu einem Abonnenten zuzuordnen und zusammenzuführen. Das einfache obige Beispiel reagiert auf ein Ereignis, beispielsweise keyUp, und wartet, bis 300 ms kein neues keyUp mehr vorhanden ist, und ruft den eventHandler auf, jedoch nur, wenn der neue Wert (nach 300 ms) vom letzten ausgegebenen Wert abweicht / p>
Ich würde empfehlen, reaktive Programmierung dafür zu verwenden. Siehe Ссылка für die Reactive Extensions für .NET und Ссылка für die allgemeinen Informationen über Reaktive Programmierung.
Ich fürchte, ich kenne nur die reaktive JavaScript-Bibliothek, daher kann ich Ihnen kein C-Sharp-Beispiel geben, aber in JavaScript würde es etwa so funktionieren:
%Vor%Mithilfe eines solchen Setups können Sie Operatoren verketten, um alle Arten von Ereignissen von einer Quelle zu einem Abonnenten zuzuordnen und zusammenzuführen. Das einfache obige Beispiel reagiert auf ein Ereignis, beispielsweise keyUp, und wartet, bis 300 ms kein neues keyUp mehr vorhanden ist, und ruft den eventHandler auf, jedoch nur, wenn der neue Wert (nach 300 ms) vom letzten ausgegebenen Wert abweicht / p>
Tags und Links javascript .net winforms settimeout