我编写了一个图像处理应用程序,其中GUI部分使用Java编写,数字计算部分使用C编写,并通过JNI调用。我的问题是,该应用程序需要20-30秒才能处理一张图像,在此期间应用程序会从任务切换器(Alt-Tab)中消失,并且无法将应用程序的窗口移到前面(这是我最关心的问题)。但是仍然可以通过任务栏将应用程序移到前面。以下是更多信息:
- 应用程序没有卡住或其他问题,我可以看到它按预期更新进度条。 - 计算完成后,应用程序将显示在任务切换器中,并且可以再次成为顶层窗口。如果我开始新的计算,则应用程序将再次从任务切换器中消失。 - JNI调用在单独的线程上进行(不是EDT),我尝试过主线程和创建的线程。 - EDT未被阻塞。我已经在WindowListener和WindowFocusListener方法中添加了printfs,如果窗口失去焦点,则会调用相应的方法。 - 在Mac OS X上,应用程序可以正常工作。 - 这是在Windows 2003 Server上的Java 1.6上运行的。 - 起初,我认为可能是openMP在处理线程时出现了问题,但关闭它并没有任何区别。 - JNI库使用MinGW 4.5编译。
对我来说,Windows似乎希望应用程序回答/发送一些请求,否则它将被从任务切换器中删除。但我甚至不知道足够的Windows编程知识来搜索答案。有人能给我一些指导吗?
- 应用程序没有卡住或其他问题,我可以看到它按预期更新进度条。 - 计算完成后,应用程序将显示在任务切换器中,并且可以再次成为顶层窗口。如果我开始新的计算,则应用程序将再次从任务切换器中消失。 - JNI调用在单独的线程上进行(不是EDT),我尝试过主线程和创建的线程。 - EDT未被阻塞。我已经在WindowListener和WindowFocusListener方法中添加了printfs,如果窗口失去焦点,则会调用相应的方法。 - 在Mac OS X上,应用程序可以正常工作。 - 这是在Windows 2003 Server上的Java 1.6上运行的。 - 起初,我认为可能是openMP在处理线程时出现了问题,但关闭它并没有任何区别。 - JNI库使用MinGW 4.5编译。
对我来说,Windows似乎希望应用程序回答/发送一些请求,否则它将被从任务切换器中删除。但我甚至不知道足够的Windows编程知识来搜索答案。有人能给我一些指导吗?