如何减轻繁忙但没有响应的窗口带来的烦恼?

如何减轻繁忙但没有响应的窗口带来的烦恼?

我在 Windows XP 中的 Matlab 中进行了大量模拟。通常,我总是打开一个 Matlab 来运行长时间的模拟,而我在另一个实例中完成我的工作。

有一些烦人的地方。如果我不小心点击了任务栏上的“工作”窗口名称,它将一直被标记为黄色(大约一个小时),如果我不小心右键单击它,将显示上下文菜单 - 但永远不会消失。覆盖其他窗口 - 最烦人。

我想知道是否有一些技巧可以让这样的上下文菜单消失而不会终止我的计算。

基本上它会永远看起来像这样: 示例屏幕

到目前为止,我了解到,如果我wait(0.1)在代码中添加一些命令,它将阻止这种情况发生,但也会严重减慢我的计算速度。因此,我不认为这是一个选择。

答案1

我认为默认情况下 Matlab 会在用户界面线程上运行模拟。因此,在模拟过程中,没有时间处理与 UI 相关的任何内容。

要解决这个问题,你必须指示 Matlab 在新线程上运行模拟。我在 SO 上找到了一些关于此内容的信息:

在谷歌上找到的信息似乎也指向并行计算工具箱

答案2

这基本上是 Windows 设计的副产品 - 应用程序响应 UI 事件接收“消息”,并由应用程序执行诸如重新绘制窗口、调整大小等操作。

Windows 将向应用程序发送适当的“消息”以响应诸如 UI 点击等事件,但应用程序可以完全忽略它们,并且通常设计/移植不良的应用程序可能会这样做。

一个设计为“感觉”具有交互性的应用程序将 A) 在不同时刻中断其正在执行的操作以处理此类消息,或 B) 有一个单独的线程来执行实际工作。我可以看到“感觉交互性”不是某些应用程序的设计重点,如果应用程序实际上是运行您自己的程序的开发环境,那么“感觉交互性”的责任就落在您身上。我玩过 Visual Studio 并运行程序,这些程序意外地创建了无限循环,导致应用程序的 CPU 使用率飙升至 100%,对 UI 也产生了类似的影响。

我现在想不起这些程序的名字,但有些程序可以让你像许多 Linux 桌面一样做“多个工作区”的事情。如果你能用这样的程序将 MATLAB 实例放在单独的工作区中,它可能有助于防止你意外点击它。

相关内容