好的,我在这里陷入两难境地。我需要的是解决以下问题的方法: 我基本上想在将一些文件创建到客户端系统的特定文件夹后自动将其上传到我的服务器。将在路径上假设某些文件将在特定路径中创建: C:\ User \ Desktop \ Scanned Files ,现在只要用户将文件保存到此路径中,某些窗口服务就会选择该文件并上传到我的服务器。过程应该足够快,我的意思是不超过1分钟。
我可以使用Windows服务或计划任务。据我所知,Windows服务总是在后台运行,但它们需要运行定时运行的定时器并执行分配的操作。 和计划任务在特定时间点运行。首先,我很困惑,我应该采用哪种方法,哪些方法能更有效,更切实地满足我的要求。或者除了Windows服务和计划任务之外还有更好的方法吗?
答案 0 :(得分:4)
您可以使用FileSystemWatcher
类,并可以利用其事件将该文件夹中的任何新文件上传到服务器,如下所示
FileSystemWatcher folderWatcher= new FileSystemWatcher("C:\User\Desktop\Scanned Files");
folderWatcher.EnableRaisingEvents = true;
folderWatcher.Created += new FileSystemEventHandler(folderWatcher_Created);
void folderWatcher_Created(object sender, FileSystemEventArgs e)
{
// Your code to upload the file to the server
}
答案 1 :(得分:1)
毫无疑问,您应该使用预定任务。
安排像您这样的简单流程(文件上传)的正确解决方案是 Windows任务计划程序。它更好,更稳定。
服务执行特定的系统功能以支持其他程序,特别是在较低级别。
服务不提供任何时间安排,因为它们旨在始终运行! 另一方面,Windows计划任务具有高级计划功能,可以通过管理方式进行访问。这是一个优势。
文件上传是服务实施的不良候选者。即使你非常谨慎和稳定地写它。
但是,您可以从一个简单的计时器开始,然后迁移到计划任务。
我希望这能为你服务。
如果您需要更多论据,请Jon Galloway的想法: 见这里:http://weblogs.asp.net/jongalloway//428303
此处还有一个相关问题:windows service vs scheduled task