是否可以创建一个C#Windows服务来检测Windows XP上的新文件创建?

Nan*_*and 1 .net c# windows-services filesystemwatcher

我有一个文件夹,其中包含将由Web服务创建的临时文件.我希望通过命令行使用.exe程序转换文件.现在,我已经生成了将在一个特定文件夹中创建文件和存储的Web服务.

这是场景:

  1. Web服务从我的移动应用程序接收amr字节数据.
  2. Web服务删除文件夹中存在的所有文件.(删除从上一轮生成的.amr文件和.mp3文件)
  3. Web服务在文件夹中创建新的.amr文件.
  4. Windows服务检测到已创建新文件.它调用converter.exe.完成后,它会在同一文件夹中创建.mp3文件.

现在,我对step1-3没有任何问题.问题是step4,我需要将.amr文件转换为.mp3文件.为了做到这一点,我需要将一些dos命令传递给converter.exe.我发现我不可能从我的网络服务中做到这一点,所以我正在考虑创建C#Windows服务,它将观察存储文件的文件夹.是否可以创建能够检测新文件创建的Windows服务并在创建新文件后立即运行converter.exe?我在互联网上搜索并发现我可能使用FileSystemWatcher创建Windows服务,但我不确定它是否可行.

我在尝试从web服务执行converter.exe时发现的原因是关于权限.我做了一切,但仍然无法成功.(使用Web服务,converter.exe在任务管理器的进程列表中显示为本地系统,但由于某些安全原因它不会被执行...)希望有当我尝试使用Windows服务执行converter.exe时没有安全问题.

提前感谢所有的答案和建议:)

Dav*_*own 6

System.IO.FileSystemWatcher可以解决这个问题.该Created事件将告诉您何时在您正在观看的目录中创建文件.要启动转换程序,请查看System.Diagnostics.Process.Start方法.这两个都应该在Windows服务中正常工作.

  • 我同意它应该在临时文件夹(在同一物理磁盘上)中创建,但是您应该移动而不是复制,因为这将避免在复制操作中引入的任何延迟,这可能导致它开始处理不完整的文件. (2认同)