日期:2014-05-17  浏览次数:20841 次

C# Windows服务 可否自动调用指定EXE 执行相关操作?
本帖最后由 linq_ 于 2011-02-14 15:55:09 编辑
假设我有一个已写好的EXE (名称 A.EXE)

此EXE的功能是对指定目录(C:\Test)内的图片进行一系列的处理 最后上传到某数据库内 [此部分已实现]

现我想写一WINDOWS服务 监听此目录

当此目录内有新图片添加时

WINDOWS服务便调用A.EXE 处理此新加的图片


不知此需求用C# 可否实现?

若可实现 可有相关示例或BLOG文章么?


------解决方案--------------------
调用当然可以了在a程序中加上一个命令行参数,作为执行命令,服务程序直接启动a.exe并传入参数,告诉他要干什么就行了
------解决方案--------------------
可以了
为什么不再服务中用定时器(或线程)做处理?
------解决方案--------------------
问题是你的A.EXE是如何设计的,这个不清楚,那个就不知道能不能调用。

如果一定要部署问独立的程序,然后又要集成到其它EXE中,这个叫做MEF。在.net框架中已经有MEF架构。
------解决方案--------------------
不要这么麻烦,调用来调用去的,监听和处理全部写在A.EXE里面不更好么? 还省了一步调用A.EXE的过程。


------解决方案--------------------
exe
是你自己写的吗?是的话功能都写到服务里可以吗
------解决方案--------------------
引用:
A.EXE就是一个简单的WINFORM程序
读取指定目录(如C:\Test)内的图片文件 然后处理 最后上传到数据库
处理过程中的相关参数都已保存到独立的XML文件中

如果是.net平台的程序,那么可以考虑MEF方式来架构它。大致只需要用10分钟修改一下就行了。

MEF就好比如Word里边可以嵌入Excel、Excel里边可以嵌入Powerpoint,可以让你独立发布的不同系统相互作为插件而自动(但是是动态而非静态编译)地相互调用。

比如不同公司的产品,它们商量一个简单的只有一两个功能的接口,然后各自在自己的产品里包含这个接口,那么不同公司的产品就能在运行时(只要知道对方产品的安装目录)作为对方产品的内部组件一样被使用。

当然30年前的程序也可以调用其他的程序。但是MEF是战略意义的,所以它才显得操作方便和非常必要。
------解决方案--------------------
若人工自己操作的时候,在你的a.exe中,用户需不需要做什么操作(比如点一个按钮,或者选定某个需要上传的文件),才能上传,还是说只需要双击a.exe就可以完成一切了。

如果是后者的话,你在windows service中用FileSystemWatcher监听文件夹,然后又变化就new一个Process调用你的a.exe就行了。
------解决方案--------------------
windows services可监控文件夹
timer定时查询
service属性中 选中 允许与桌面交互  
设置c#windows服务描述及允许服务与桌面交互的几种方法
http://blog.csdn.net/jiangxinyu/archive/2010/03/19/5397060.aspx
监控http://www.cnblogs.com/wuhuacong/archive/2010/08/09/1795725.html 
------解决方案--------------------