Wie lassen sich die Unannehmlichkeiten eines aktiven, aber nicht reagierenden Fensters lindern?

Wie lassen sich die Unannehmlichkeiten eines aktiven, aber nicht reagierenden Fensters lindern?

Ich führe viele Simulationen in Matlab unter Windows XP durch. Normalerweise habe ich immer ein Matlab geöffnet, das eine langwierige Simulation durchführt, während ich in einer anderen Instanz meine Arbeit erledige.

Es gibt einige Ärgernisse. Wenn ich versehentlich auf den Namen des „Arbeits“-Fensters in der Taskleiste klicke, bleibt es für immer gelb markiert (etwa eine Stunde), und wenn ich versehentlich mit der rechten Maustaste darauf klicke, wird ein Kontextmenü angezeigt, das aber nie verschwindet. Das Überdecken anderer Fenster ist am ärgerlichsten.

Ich frage mich, ob es Tipps gibt, wie ich ein solches Kontextmenü verschwinden lassen kann, ohne meine Berechnung zu zerstören.

Im Grunde wird es für immer so aussehen: beispielhafter Bildschirm

Bisher habe ich gelernt, dass das Einfügen einiger wait(0.1)Befehle in meinen Code dies zwar verhindert, aber meine Berechnungen dadurch erheblich verlangsamt. Daher halte ich das nicht für eine Option.

Antwort1

Ich würde davon ausgehen, dass Matlab Ihre Simulation standardmäßig auf dem Benutzeroberflächen-Thread ausführt. Während Sie simulieren, bleibt also keine Zeit, sich um irgendetwas im Zusammenhang mit der Benutzeroberfläche zu kümmern.

Um dies zu umgehen, müssten Sie Matlab anweisen, Ihre Simulationen in einem neuen Thread auszuführen. Ich habe dazu einiges auf SO gefunden:

Auch die bei Google gefundenen Informationen deuten in die Richtung derParallel Computing-Toolbox.

Antwort2

Dies ist grundsätzlich ein Nebenprodukt des Windows-Designs – Anwendungen erhalten „Nachrichten“ als Reaktion auf UI-Ereignisse und es ist Sache der Anwendung, Dinge wie das Neuzeichnen ihres Fensters, die Größenanpassung usw. durchzuführen.

Windows sendet der Anwendung als Reaktion auf Ereignisse wie UI-Klicks usw. die entsprechenden „Nachrichten“, die Anwendung kann diese jedoch vollständig ignorieren, was bei schlecht konzipierten/portierten Anwendungen normalerweise zutrifft.

Eine Anwendung, die so konzipiert ist, dass sie sich „interaktiv anfühlt“, wird A) ihre aktuelle Arbeit zu verschiedenen Zeitpunkten unterbrechen, um solche Nachrichten zu verarbeiten, oder B) einen separaten Thread haben, der die eigentliche Arbeit erledigt. Ich kann verstehen, dass „Interaktivität“ bei manchen Anwendungen keine Designpriorität ist, und wenn die Anwendung tatsächlich eine Entwicklungsumgebung zum Ausführen Ihrer eigenen Programme ist, liegt die Verantwortung für „Interaktivität“ bei Ihnen. Ich habe mit Visual Studio gespielt und Programme ausgeführt, die versehentlich Endlosschleifen erzeugen, wodurch die CPU-Auslastung der Anwendung auf 100 % ansteigt, was ähnliche Dinge mit der Benutzeroberfläche bewirkt.

Mir fällt jetzt der Name eines dieser Programme nicht ein, aber es gibt einige, mit denen Sie mehrere Arbeitsbereiche nutzen können, wie es viele Linux-Desktops haben. Wenn Sie Ihre MATLAB-Instanzen mithilfe eines solchen Programms in separate Arbeitsbereiche legen können, kann dies verhindern, dass Sie versehentlich darauf klicken.

verwandte Informationen