Как уменьшить раздражение от загруженного, но неотзывчивого окна?

Как уменьшить раздражение от загруженного, но неотзывчивого окна?

Я делаю много симуляций в Matlab в Windows XP. Обычно у меня всегда открыт один Matlab, который запускает длинную симуляцию, пока я делаю свою работу в другом экземпляре.

Есть некоторые раздражающие моменты. Если я случайно нажму на имя "рабочего" окна на панели задач, оно будет помечено желтым навсегда (час или около того), а если я случайно нажму на него правой кнопкой мыши, появится контекстное меню, но оно никогда не исчезнет. Перекрытие других окон - самое раздражающее.

Мне интересно, есть ли советы, как заставить такое контекстное меню исчезнуть, не убивая при этом мои вычисления.

По сути, это будет выглядеть так всегда: образцовый экран

Пока что я узнал, что если я вставлю некоторые wait(0.1)команды в свой код, это предотвратит это, но также ужасно замедлит мои вычисления. Поэтому я не рассматриваю это как вариант.

решение1

Я бы предположил, что по умолчанию Matlab запускает вашу симуляцию в потоке пользовательского интерфейса. Так что пока вы симуляционируете, нет времени обрабатывать что-либо, связанное с пользовательским интерфейсом.

Чтобы обойти это, вам придется указать Matlab запустить ваши симуляции в новом потоке. Я нашел некоторые фрагменты на SO по этому поводу:

Информация, найденная в Google, также, похоже, указывает на направлениеИнструментарий параллельных вычислений.

решение2

По сути, это побочный продукт архитектуры Windows — приложения получают «сообщения» в ответ на события пользовательского интерфейса, и приложение само решает, как перерисовывать свое окно, изменять его размер и т. д.

Windows будет отправлять приложению соответствующие «сообщения» в ответ на такие события, как щелчки по элементам пользовательского интерфейса и т. д., но приложению разрешено полностью игнорировать их, и обычно плохо спроектированные/портированные приложения могут так поступать.

Приложение, разработанное для того, чтобы «ощущать» интерактивность, будет A) прерывать то, что оно делает, в различные моменты для обработки таких сообщений, или B) иметь отдельный поток, который выполняет фактическую работу. Я понимаю, что «ощущение интерактивности» не является приоритетом дизайна некоторых приложений, и если приложение на самом деле является средой разработки для запуска ваших собственных программ, то ответственность за «ощущение интерактивности» ложится на вас. Я играл с Visual Studio и запускал программы, которые случайно создавали бесконечные циклы, заставляя приложение загружать ЦП до 100%, что делает похожие вещи с пользовательским интерфейсом.

Я не могу вспомнить название какой-либо из этих программ сейчас, но есть несколько программ, которые позволят вам использовать "множественные рабочие пространства", как это делают многие рабочие столы Linux. Если вы можете поместить свои экземпляры MATLAB в отдельные рабочие пространства с помощью такой программы, это может помочь предотвратить случайный щелчок по нему.

Связанный контент