我編寫了一個圖像處理應用程序,其中用Java編寫的GUI部分和數字運算部分用C編寫,並通過JNI調用。繁忙時無法將Java窗口置於前面
我的問題是,它需要20 - 30秒的應用程序來處理圖像,並在此期間應用程序從任務切換器(Alt-Tab thingy)消失,並且不可能移動應用程序的窗口到前面(這是我主要關心的問題)。仍然可以通過任務欄將應用程序置於前面。
一些更多的信息:
- 應用程序沒有卡住或任何東西,我可以看到它如預期更新進度條。
- 計算完成後,應用程序將顯示任務切換器,並可以再次成爲頂部窗口。如果我開始新的計算,應用程序將再次從任務切換器中消失。
- JNI調用是在單獨的線程(來自EDT)上進行的,我已經嘗試了主線程和創建的線程。
- EDT未被封鎖。我在WindowListener和WindowFocusListener的方法中添加了printf,如果窗口失去焦點,則會調用適當的方法。
- 在Mac OS X上,應用程序沒有問題。
- 這是在Windows 2003 Server上的Java 1.6上。
- 首先,我認爲這是openMP,正在做一些令人討厭的線程,但關閉它並沒有什麼區別。
- JNI lib是用MinGW 4.5編譯的。
在我看來,Windows期望應用程序應答/發送一些請求,否則將被拋出任務切換器。但是我甚至不知道Windows編程甚至無法在google上找到答案。有人能給我一些指點嗎?
你可以轉移到客戶端 - 服務器模式,在服務器中進行數字運算,更新文件,所以Java應用程序始終可供用戶使用嗎?服務器可以通過套接字連接發送更新,您只需斷開連接即可。 – 2010-07-25 23:56:20
哦,這似乎有點激烈,因爲這是應該工作的這些東西之一。 :-D – Kalle 2010-07-26 12:49:14