2009-05-04 6 views
2

Ich habe eine Anwendung, die unter anderem mit SendMessage mit einer anderen Anwendung interagiert. Alles funktioniert gut, bis die andere Anwendung hängt (entweder weil sie tatsächlich eingefroren ist oder einen langen blockierenden Anruf ausführt). Ich möchte eine Anwendung simulieren, die mit einer C# WinForms-Anwendung hängt. Gibt es eine Möglichkeit, einen lang andauernden blockierenden Anruf zu starten? Oder vielleicht eine Möglichkeit, die Anwendung tatsächlich einzufrieren? Vielleicht etwas wie WebClient.DownloadString(), aber etwas, das niemals zurückkehren wird.Simulieren einer gesperrten/gehangenen Anwendung

Antwort

5
while(true) { } // busy waiting 
Thread.Sleep(time); // blocking 
+0

Doh, so einfach. Ich habe das Offensichtliche völlig übersehen. Ich habe damit angefangen, weil es unendlich ist: System.Threading.Thread.Sleep (System.Threading.Timeout.Infinite); –

0

Wenn Sie eine lange laufende Aufgabe simulieren möchten, verwenden Sie

Thread.Sleep(timeout); 

und mit Timeout.Infinite wenn Sie wollen immer blockieren.

Wenn Sie auch eine starke Prozessorauslastung simulieren möchten, verwenden Sie eine Endlosschleife.

while (true) { } 
0

Wie wäre es, wenn Sie einfach die Nachrichtenpumpe ausschalten? Dann wird Ihre App nicht nur als eingefroren angezeigt, sondern das System meldet sie als eingefroren (a la IsHungAppWindow (hWnd)).