如何在创建新文件夹或文件时触发Windows服务启动

时间:2013-11-06 13:08:51

标签: c# visual-studio-2008 triggers windows-services createprocess

我有一个Windows服务,可以在开始时打印报告。我有两种情况 -
1.我想在我的E:\ here \文件夹中创建新文件夹时启动此服务。如何完成此操作?
2当新行插入数据库表时,是否可以触发服务?如何?

请提供上述查询的链接。

2 个答案:

答案 0 :(得分:1)

您可以创建新服务,轮询新记录和/或新文件夹,然后相应地启动现有服务。

对于数据库,您很可能只是定期验证给定表中的行计数或最新ID,例如每5秒或任何可接受的窗口。如果数据库是SQL Server数据库,则还可以使用SqlDependency类。在MSDN(http://msdn.microsoft.com/en-us/library/62xk7953(v=vs.110).aspx)和代码项目(http://www.codeproject.com/Articles/12335/Using-SqlDependency-for-data-change-events)上有更多相关内容。

对于该文件夹,您可以使用FileSystemWatcher类来通知您任何更改(以下是如何执行此操作的示例:http://snipplr.com/view/54606)。

答案 1 :(得分:1)

您可以使用FileSystemWatcher检查特定文件夹是否在特定位置创建。创建后,您可以启动Windows服务。

Creating FileSystemWatcher

//Define this in the clas level
FileSystemWatcher watcher = new FileSystemWatcher();

Initializing

private void InitializeWatcher()
{ 
  watcher.Created += new FileSystemEventHandler(NotifyChange);
  watcher.Path = @"E:\here\folder";
  watcher.EnableRaisingEvents = true;
}

Starting Windows Service when folder is created

private void NotifyChange(object sender, FileSystemEventArgs e)
{
   if (e.Name.Equals("FolerName",StringComparison.OrdinalIgnoreCase))
   {
      new ServiceController("WindowsServiceName").Start();
   }
}