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

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

1.背景

在某個項目中須要考慮使用java後臺調用由C#編寫的切圖程序(exe),而且前端可以獲取到切圖的進度和相關描述信息。java

2.解決思路

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

b.編寫java後臺傳參調用exe的函數。函數

c.解決通訊問題。線程

3.具體實現

3.1改寫C#窗體程序

 

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

                       

將須要傳入的參數寫在args數組中,後續業務邏輯上所以作相關改寫便可。對象

3.2java端傳參調用

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

 

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

若是exe中不設置返回參數,則默認執行正確爲0。get

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/

相關文章
相關標籤/搜索