Einfache, nicht blockierende Art zu schlafen?

7

Ich habe dafür gegoogelt und hier ein paar Threads gelesen, aber ich habe keine einfache Möglichkeit gefunden, eine VB.Net-Anwendung für eine Weile schlafen zu lassen und trotzdem die Anwendung reaktionsfähig zu halten:

%Vor%

Gibt es wirklich keine einfache, blockierungsfreie Lösung, um eine VB.Net-Anwendung einige Sekunden warten zu lassen?

Danke.

    
Gulbahar 10.02.2010, 14:45
quelle

7 Antworten

7

Ist das WinForms oder WPF?

Wenn es sich um WinForms handelt, können Sie einfach einen Timer anstelle einer while-Schleife verwenden. Dann würde Ihre App immer noch reagieren und Ereignisse auslösen.

In WPF denke ich, dass Sie Ihren eigenen Timer basierend auf dem erstellen müssen DispatchTimer-Klasse .

    
Seth Moore 10.02.2010 14:48
quelle
7
%Vor%

Rufen Sie ResponsiveSleep auf, um einen bestimmten Codeabschnitt anzuhalten, während die Anwendung relativ reaktionsschnell bleibt. Um die Anwendung reaktionsfähiger zu machen, könnte iHalfSeconds in Zehntel- oder Hundertstelsekunden geändert werden.

    
user408874 02.08.2010 17:05
quelle
4
%Vor%     
Gbolahan 02.12.2011 11:29
quelle
2

Der Timer-Vorschlag ist wirklich der beste Weg, es zu tun. Aber wenn DoEvents immer noch funktioniert (ich habe VB seit 5.0 nicht mehr gemacht), können Sie das tun:

%Vor%

Dies würde 600 Schläge von jeweils 0,1 Sekunden dauern, mit einem DoEvent zwischen jedem, um aktuelle Ereignisse zu behandeln. Die 0,1 Sekunde sollte ein guter Kompromiss zwischen Reaktionszeit (Ereignisse werden innerhalb von 0,1 Sekunden behandelt) und CPU-Verbrauch (machen Sie dies zu schnell und Ihre App wird beginnen, eine erhebliche Menge an CPU-Zeit verbrauchen, auch während der Wartezeit).

    
Wim 10.02.2010 14:52
quelle
2

Wirklich, die Lösung ist zweifach: 1.) Benutze einen Timer anstatt zu schlafen, der Schlaf tut wie es heißt, verursacht den Thread zu schlafen. 2.) Verwenden Sie Multithreading und lassen Sie Ihre Bildschirm-Verschrottungsfunktion in einem eigenen Thread laufen, wodurch die Reaktionsfähigkeit Ihrer Anwendung erheblich verbessert wird.

%Vor%

Ist eine Thread-Safe-Sleep-Funktion, die den aktuellen Thread für die angegebene Zeit pausiert. Wenn Sie also den Ruhezustand verwenden möchten, können Sie dies in einer Multithreading-Umgebung tun und den Rest Ihrer App wie gewohnt ansprechen lassen schlafe nur einen verzweigten Thread, nicht den Hauptthread.

    
Jarrod Christman 26.11.2012 16:41
quelle
0

U machen den UI-Thread, der das Formular in den Ruhezustand versetzt. Wenn Sie Ihre Anwendung reaktionsfähig machen möchten, erstellen Sie zuerst eine Methode, die die Elemente in der Listenansicht hinzufügt, und wenn form lädt, starten Sie diese Methode mit thread. Verwenden Sie nun sleep, um die Listenansicht thread sleep zu machen ..

    
KrazzyRider 20.09.2013 09:47
quelle
0

Dies ist für VB nicht VBA

%Vor%     
Jimva 21.07.2017 22:22
quelle

Tags und Links