2016-06-07 67 views
0

好吧,所以我在这里困境。我需要的是我的下列问题的解决方案: 我基本上想要自动上传一些文件到我的服务器,一旦它们被创建到客户端系统的特定文件夹中。将有一些文件将在特定路径中创建,假设路径为: C:\ User \ Desktop \ Scanned Files,现在只要用户将其文件保存到此路径中,应该选择一些窗口服务类型的东西将文件上传并上传到我的服务器。过程应该足够快,我的意思是不超过1分钟。自动上传文件,只要他们进入一个特定的文件夹

我可以去与Windows服务或计划的任务。据我所知,windows服务总是在后台运行,但他们需要运行一个定时运行的定时器并执行分配的操作。 和计划任务在特定时间点运行。首先,我在这里很困惑,应该采用哪种方法,以及哪些方法可以更有效和切实地满足我的要求。还是有没有更好的方法来做到这一点,而不是Windows服务和计划任务?

回答

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 
    } 
+0

,似乎你问去与窗口服务选项,正确我如果我在这里错了。但我应该在background_worker中运行此代码?在哪里以及如何使用这些代码? –

+0

好吧,我知道了,经过一些研究得到这个:http://stackoverflow.com/questions/11999335/windows-service-w-filesystemwatcher-in-c-sharp –

+0

你可以有这个观察者在任何类型的应用程序,它取决于你的项目类型。或者,您可以使用此观察器创建缓存依赖项,并可以处理缓存依赖项的invalidate回调函数以上载文件。 –

1

你应该毫无疑问使用计划任务。

用于安排类似您的简单流程(文件上传)的正确解决方案是Windows任务计划程序。它只是更好,更稳定。

服务执行特定的系统功能来支持其他程序,特别是在低级别。

服务提供没有调度,因为他们的设计始终运行!另一方面,Windows计划任务具有高级计划功能可以通过管理方式访问。这是一个优点。

文件上传是服务实施的一个不好的候选人。即使你写得非常谨慎和稳定。

但是,您可以从一个简单的计时器开始,然后迁移到计划任务。

我希望这能为您服务。

如果你需要更多的参数,请乔恩·加洛韦的想法: 在这里看到:http://weblogs.asp.net/jongalloway//428303

另外这里还有一个相关的问题:windows service vs scheduled task

+0

我会假设防病毒软件非常依赖文件系统事件,并且主要以服务运行。你为什么认为FileSystemWatcher不会不合适?写得好的服务也可以毫无问题地运行,确实也更难。 –

+0

但是我不想在特定的时间点运行,这种方法应该始终运行,并且一直检查文件夹中是否存在任何文件,如果是,那么只要创建文件就立即上传它们。 –

相关问题