2

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

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

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

В основном это будет выглядеть вечно:примерный экран

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

2 ответа2

1

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

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

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

0

Это в основном побочный продукт дизайна Windows - приложения получают "сообщения" в ответ на события пользовательского интерфейса, и это зависит от приложения, чтобы сделать такие вещи, как перекрасить свое окно, изменить размер и т.д.

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .