我创建了 ac# 库文件,它将转到本地路径,例如(c:\test.txt)找到文件并上传到 ftp 服务器。
为了进行测试,我只是从控制台应用程序中调用了 dll,但是我如何作为 Windows 服务运行,它将持续运行?
我想将此 dll 作为服务运行以监视 c:\ 文件夹,如果有任何文件类似于“test.txt”然后上传。
提前致谢
我创建了 ac# 库文件,它将转到本地路径,例如(c:\test.txt)找到文件并上传到 ftp 服务器。
为了进行测试,我只是从控制台应用程序中调用了 dll,但是我如何作为 Windows 服务运行,它将持续运行?
我想将此 dll 作为服务运行以监视 c:\ 文件夹,如果有任何文件类似于“test.txt”然后上传。
提前致谢
当您使用 DLL 的功能时,它会被“调用”。因此,如果您有一个 DLL 项目,其中包含一些类和一些函数,只需将 DLL 添加为对您的服务项目的引用并调用适当的函数。
您可能希望使用此库来创建您的 Windows 服务。原因是,当您使用 Visual Studio 模板构建 Windows 服务时,生成的构建并没有真正“运行”。生成的构建是必须安装然后使用服务管理单元启动的 Windows 服务。但是使用 Hoytsoft 的自定义 Windows 服务库,您的服务将自动安装,然后自动启动 - 就像常规的 Windows 窗体应用程序一样。
为确保您的服务在启动时运行,请记住将您的服务类配置为 AutoStart(如他的 CodeProject 文章中所述)。为了确保您的服务持续运行,即使进程被终止,您也可以添加这个方便的注册表黑客,它将重新启动服务标志设置为立即重新启动。
这个注册表黑客 ==
注册表黑客:
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Services\<YOUR_SERVICE_NAME_HERE>", true);
key.SetValue("FailureActions", new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, Microsoft.Win32.RegistryValueKind.Binary);
key.Close();
了解任何管理用户仍然可以通过简单地禁用您的服务来终止您的进程。
查看FileSystemWatcher类以监视目录/文件的更改。