Como aliviar os aborrecimentos de uma janela ocupada, mas que não responde?

Como aliviar os aborrecimentos de uma janela ocupada, mas que não responde?

Estou fazendo muitas simulações em Matlab no Windows XP. Normalmente sempre tenho um Matlab aberto que executa uma simulação longa enquanto faço meu trabalho em outra instância.

Existem alguns aborrecimentos. Se eu clicar acidentalmente no nome da janela "de trabalho" na barra de tarefas, ela continuará marcada em amarelo para sempre (mais ou menos uma hora) e se eu acidentalmente clicar com o botão direito do mouse, um menu de contexto será exibido - mas nunca desaparecerá. Cobrir outras janelas é muito irritante.

Gostaria de saber se há dicas de como fazer esse menu de contexto desaparecer sem interromper meu cálculo.

Basicamente, ficará assim para sempre: tela exemplar

Até agora aprendi que se eu colocar alguns wait(0.1)comandos em meu código isso evitará isso, mas também retardará terrivelmente meus cálculos. Portanto não considero isso uma opção.

Responder1

Eu diria que, por padrão, o Matlab executa sua simulação no thread da interface do usuário. Portanto, enquanto você simula, não há tempo para lidar com nada relacionado à IU.

Para contornar isso, você teria que instruir o Matlab para executar suas simulações em um novo thread. Encontrei alguns bits no SO sobre isso:

As informações encontradas no Google também parecem apontar na direção doCaixa de ferramentas de computação paralela.

Responder2

Este é basicamente um subproduto do design do Windows - os aplicativos recebem "mensagens" em resposta aos eventos da interface do usuário e cabe ao aplicativo fazer coisas como repintar sua janela, redimensionar, etc.

O Windows enviará ao aplicativo as "mensagens" apropriadas em resposta a eventos como cliques na interface do usuário, etc., mas o aplicativo pode ignorá-los completamente e, normalmente, aplicativos mal projetados/portados podem fazer isso.

Um aplicativo projetado para "parecer" interativo A) interromperá o que está fazendo em vários momentos para processar tais mensagens, ou B) terá um thread separado que faz o trabalho real. Posso ver onde "sentir-se interativo" não é a prioridade de design de alguns aplicativos, e se o aplicativo for de fato um ambiente de desenvolvimento para executar seus próprios programas, a responsabilidade de "sentir-se interativo" recairá sobre você. Eu brinquei com o Visual Studio e a execução de programas que criam acidentalmente loops infinitos, fazendo com que o uso da CPU do aplicativo atinja 100%, faz coisas semelhantes com a interface do usuário.

Não consigo pensar no nome de nenhum desses programas agora, mas existem alguns programas por aí que permitem que você faça a coisa de “espaço de trabalho múltiplo”, como muitos desktops Linux fazem. Se você puder colocar suas instâncias do MATLAB em áreas de trabalho separadas usando esse programa, isso poderá ajudar a evitar que você clique nele acidentalmente.

informação relacionada