我在使用 ImageJ 宏时遇到问题。函数 selectImage(id) 和 selectWindow(name) 导致 ImageJ 完全崩溃,即使我必须完全重置 Unity(我在 Ubuntu 12.04 上),因为所有 GUI 输入都会冻结。
发生这种情况的宏相当长。当我在简短的宏中使用上述功能时,什么也没有发生。我首先打开图像,然后执行数千次操作,然后请求窗口切换。那是整个事情冻结的时候。
有没有人足够熟悉这些以提出可能是什么问题?
如果您为宏添加前缀,setBatchMode(true)
那么 ImageJ 将在后台执行宏,在宏完成(或直到setBatchMode(false)
被调用)之前不显示或更新任何窗口。这将防止selectWindow
和selectImage
调用实际将窗口带到前台,并在您的情况下使 Unity 崩溃。您的宏也将快几个数量级。
我在写问题时找到了解决方案。问题是我在循环内调用 selectImage() 和 selectWindow(),这导致每秒有数千个窗口切换请求。我猜 Unity 不能很好地处理这个问题。
底线:不要在长循环中调用这些函数。