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

时间:2011-08-18 14:07:09

标签: c# .net windows-services filesystemwatcher

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

以下是该方案:

  1. Web服务从我的移动应用程序接收amr字节数据。
  2. Web服务删除文件夹中存在的所有文件。 (删除从上一轮生成的.amr文件和.mp3文件)
  3. Web服务在文件夹中创建新的.amr文件。
  4. Windows服务检测到已创建新文件。它调用converter.exe。完成后,它会在同一文件夹中创建.mp3文件。
  5. 现在,我对步骤1-3没有任何问题。问题是step4,我需要将.amr文件转换为.mp3文件。为了做到这一点,我需要将一些dos命令传递给converter.exe。我发现我不可能从我的网络服务中做到这一点,所以我正在考虑创建C#Windows服务,它将观察存储文件的文件夹。是否可以创建能够检测新文件创建的Windows服务并在创建新文件后立即运行converter.exe?我在互联网上搜索并发现我可能使用FileSystemWatcher创建Windows服务,但我不确定它是否可行。

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

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

1 个答案:

答案 0 :(得分:6)

System.IO.FileSystemWatcher会做到这一点。 Created事件将告诉您何时在您正在观看的目录中创建文件。要开始转换计划,请查看System.Diagnostics.Process.Start方法。这两种方法在Windows服务中都可以正常工作。