使用java傳參調用exe並且獲取程序進度和返回結果的一種方法


文章版權由作者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/

1.背景

在某個項目中需要考慮使用java后台調用由C#編寫的切圖程序(exe),並且前端能夠獲取到切圖的進度和相關描述信息。

2.解決思路

a.首先改造切圖程序為接受參數從Main函數傳遞。

b.編寫java后台傳參調用exe的函數。

c.解決通信問題。

3.具體實現

3.1改寫C#窗體程序

 

C#中的入口程序為Main函數,其中Main函數默認是沒有參數的,如果添加參數,其只支持一個String數組參數,入口改寫如下:

                       

將需要傳入的參數寫在args數組中,后續業務邏輯上因此做相關改寫即可。

3.2java端傳參調用

Java中可以利用Process類進行對exe或者是命名行cmd進行調用。具體例子如下:

 

其中exec為傳參調用,而waitFor函數為當前線程等待函數,並可獲取到由該 Process 對象表示的進程終止后返回的值。

如果exe中不設置返回參數,則默認執行正確為0。

3.3通信設計

3.3.1方案一

a.前端發出請求,等待回應。

b.后台接受請求,調用起exe。

c.exe執行完后將信息寫入到指定文本中。

d.java端監聽程序執行完畢后,獲取指定文本。

e.解析文本中的信息。信息可以按照自定義規則組織,傳達所需表示的含義。

f.將解析后的數據返回給前端。

 

優點:

前端無需輪詢,等待返回結果即可。

缺點:

會出現請求超時問題,並且無法知道exe執行的目前狀態。

3.3.2方案二

a.前端發出請求,並開始定時觸發程序狀態查詢請求。

b.后台接受請求,調用起exe。

c.exe執行過程、完畢均向指定文本中寫入信息。

d.前端狀態查詢請求,不斷讀取指定文本中的狀態信息,在前端進行相關展示。

 

優點:

規避請求超時問題,可以實時獲取程序進程。

缺點:

前端需要進行定時狀態輪詢請求。

 

                          -----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM