Liebe, hier habe ich ein kleines Programm unter Aktion/Prozesse der Reihe nach zu tun. jetzt tue ich unten in einer Funktion, scheint nicht gut :)Wie führe ich meine Aktionen der Reihe nach mit etwas Schlaf während es? (C++, winapi)
Init-Benutzeroberfläche, löschen EDIT-Box, Listview; Initiiere den Status der Tasten und so weiter;
Stromversorgung meine Geräte;
benötigen 20 Sekunden Schlaf oder Timer, weil das Gerät Zeit für den Start benötigt;
Verbindung mit Gerät, lesen Sie einige Daten davon;
brauchen 3 Sekunden, um Rückmeldung vom Gerät zu warten;
Antwort vom Gerät erhalten, die Daten entschlüsseln und auf der Benutzeroberfläche anzeigen;
...
Vorerst benutze ich nur sleep() in meinem Programm, und führen Sie die obigen Schritte einer nach dem anderen. Glücklicherweise weiß ich von stackoverflow, dass mein aktueller Weg nicht gut ist, die Rückmeldung und das Update der Benutzeroberfläche ist sehr langsam, und manchmal, das Programm sogar einfrieren, ziemlich dumm.
Und einige ältere Kerle sagten mir, ich sollte Timer statt Schlaf verwenden.
Also, meine Frage ist: Wie Timer in meinem aktuellen Programm zu verwenden? (tun Sie es einfach wie die MSDN sagen?) Wie kann ich es basierend auf oben genannten Anforderungen verbessern? Benötige ich Multithread?
Sorry für so viele Fragen :)
der Tat möchte ich alles besser.
Vielen Dank im Voraus.
Polling überhaupt nicht verwenden (die Verwendung eines beliebigen Schlummers ist der Vorläufer des Pollings). Ihre Anwendung wird besser sein, wenn Sie Veranstaltungen abonnieren und stattdessen auf diese reagieren. Verwenden Sie einen Zeitgeber nur zum Implementieren von Zeitüberschreitungen. – IInspectable
Und falls keine Ereignisse verfügbar sind, ist die nächste beste Option, einen Worker-Thread zu verwenden, um das Gerät in einer Schleife mit einem Ruhezustand bei jeder Schleifeniteration abzufragen. In jedem Fall gehört das Geräte-Management definitiv nicht in den Haupt-UI-Thread Ihrer App. –
@Inspectable, vielen Dank für Ihre Hilfe. Eigentlich kann ich nicht verstehen, was du gesagt hast: "Benutze überhaupt keine Umfrage", was ist das? Meinst du, ich sollte nicht zu viel Schlaf() in meinem Programm verwenden? Danke noch einmal. – NYwalker