使用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/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)