Event-Stream. Wie kann man das Ereignis kontrollieren und in den Leerlauf versetzen? (+ gelöst) - Seite 6

Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Und haben Sie schon eine neue Frage gestellt?
Es ist nicht angebracht, dass ein Moderator eine Flut auslöst. Zur Klarstellung. Wenn ein Benutzer (einschließlich eines Moderators) einen neuen Beitrag zu einem Thema hinzufügt, ist es üblich, dies als "Antwort" zu bezeichnen. Selbst wenn es sich um eine sarkastische Erwiderung handelt.
Deshalb noch einmal zur Klarstellung: Wenn Sie es als Zirkus empfinden, können Sie es gerne löschen oder versuchen, eine neue Nachricht in der Sache zu verfassen. Ungenaue Informationen hingegen können die Nutzer in die Irre führen.
Zum Hinzufügen. Ich werde der Erste sein, der sich bei Ihnen bedankt, wenn sich offiziell herausstellt (falls Sie dazu beitragen, dies herauszufinden), dass Benutzerereignisse die Warteschlange nach den alten Regeln füllen.
Ich füge hinzu. Ich werde der Erste sein, der sich bei Ihnen bedankt, wenn sich offiziell herausstellt (falls Sie dabei helfen, das herauszufinden), dass benutzerdefinierte Ereignisse die Warteschlange nach den alten Regeln füllen.
Grob gesagt, hat sich die Handhabung von Ereignissen nie geändert. Es ist nur so, dass es ursprünglich in der Hilfe nicht richtig geschrieben war.
...
Ich verwende aktiv die Leerlaufmeldung, die in jeder meiner Anwendungen erstellt wird. Alles funktioniert.
Ich verwende aktiv die Leerlaufmeldung, die in jeder meiner Anwendungen erstellt wird. Alles funktioniert.
sergeev:
Ich habe mir einen Käfer eingefangen.Dies geschieht durch das Senden des Ereignisses EventChartCustom vom Expert Advisor an sich selbst. Es stellt sich heraus, dass dieses Senden des Ereignisses die Aktualisierung des Diagramms (ChartRedraw) des Hauptfensters bewirkt.
//---
Ich habe einen solchen Experten erstellt, um Ihre Lösung zu testen und gleichzeitig versucht, das Problem mit dem sehr häufigen Flackern des Textes beim Bearbeiten eines OBJ_EDIT-Objekts zu lösen.
//---
//---
Nach dem Start des Expert Advisors sehen Sie auf dem Chart in der oberen linken Ecke folgendes:
//---
Wenn Sie auf die Schaltfläche"START event_idle++" klicken, gelangen Sie zu Ihrer(Alex-)Lösung. Der Zähler event_idle++ wird direkt im Diagramm erhöht.
Solange die Taste gedrückt wird, funktioniert Ihr Code. Aber es verbraucht eine Menge Ressourcen. Die CPU-Belastung (getestet auf einem Dual-Core-System) reicht von ~90% bis ~100%. Die CPU-Last liegt zwischen ~5% und ~10% vor dem Start oder wenn die Taste losgelassen wird. Durch Klicken (Linksklick) auf das Diagramm wird der Zähler auf Null zurückgesetzt.
Die Eingabe von Text in das Eingabefeld verursacht kein Flackern, da Ihr Code im Moment der Eingabe durch die globale Variable"On/Off event_idle++" deaktiviert wird. Es ist natürlich eine Krücke, aber als vorübergehende Lösung ist es für einige einfache Lösungen in Ordnung.
Die CPU-Auslastung ist nicht das einzige Problem. Wenn der Zähler läuft, öffnen sich die Fenster des Handelsterminals schnell, aber die Größenänderung der Fenster verlangsamt sich merklich. Nicht immer, aber solche Momente gibt es.
Die CPU-Auslastung ist nicht das einzige Problem. Wenn der Zähler läuft, öffnen sich die Fenster des Handelsterminals schnell, aber die Größenänderung der Fenster verlangsamt sich merklich. Nicht immer, aber es gibt solche Momente.
Das Problem der CPU-Last kann wie folgt gelöst werden. Geben Sie an, dass der Ereigniszähler einmal pro Sekunde aktualisiert wird. Wir fügen den folgenden Code hinzu:
In OnInit():
//---
Im Hauptteil des Programms:
//---
Zu Alex' Code (rot markiert):
//---
ImCHARTEVENT_CLICK-Ereignishandlerblock(rot markiert):
//---
Der CHARTEVENT_OBJECT_CLICK-Ereignishandler-Block sollte wie folgt bearbeitet werden + Der Zustand des Buttons sollte trotzdem überprüft werden, denn manchmal bleibt er auch bei "falschem" Drücken gedrückt, wenn er vorher so war, aber der Rest des Codes im Block funktioniert und die Verwirrung beginnt:
//---
Jetzt wird es noch interessanter. :)
//---
P.S. Wenn Sie sehr viele Sekunden haben, können Sie versuchen, mit GetTickCount() zu fummeln.
Was soll ich sagen
1. Es ist eine Belastung für die CPU. Entfernen Sie es und es wird leise sein.
2. Die Leerlaufschleife selbst hat keine spürbaren Auswirkungen auf die CPU.
3. Das Problem mit dem Flackern des Edith ist kein Problem mit einem einzelnen 0-Diagramm, sondern mit dem Senden eines Ereignisses an das Objektdiagramm. Dadurch wird das Hauptdiagramm 0 neu gezeichnet und flackert.
Was soll ich sagen
1. Es ist eine Belastung für die CPU. Entfernen Sie es und es wird leise sein.
2. Die Leerlaufschleife selbst hat keine spürbaren Auswirkungen auf die CPU.
3. Das Problem mit dem Flackern des Edith ist kein Problem mit einem einzelnen 0-Diagramm, sondern mit dem Senden eines Ereignisses an das Objektdiagramm. Dadurch wird das Hauptdiagramm 0 neu gezeichnet und flackert.