我有一个Windows服务,可以在开始时打印报告。我有两种情况 -
1.我想在我的E:\ here \文件夹中创建新文件夹时启动此服务。如何完成此操作?
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();
}
}