Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅在方法完成后启动windows服务_C#_Methods_Service - Fatal编程技术网

C# 仅在方法完成后启动windows服务

C# 仅在方法完成后启动windows服务,c#,methods,service,C#,Methods,Service,我是c#的初学者,需要帮助解决以下问题。 在我的程序中,我想启动一个服务,但只有在a方法完成之后。比如说, { // A method which copies file A(); // A service that uses the copied files in function A() ServiceController service = new ServiceController("ServiceName");

我是c#的初学者,需要帮助解决以下问题。 在我的程序中,我想启动一个服务,但只有在a方法完成之后。比如说,

    {
       // A method which copies file
       A(); 
       // A service that uses the copied files in function A()
       ServiceController service = new ServiceController("ServiceName"); 
       service.Start();
    }
问题是服务已经启动,但方法A()尚未完成复制。 欢迎任何意见或帮助

你可以在课堂上做

您可以使用ServiceController类连接并控制 现有服务的行为。当您创建 ServiceController类,您可以设置其属性,以便它与 特定的Windows服务。然后可以使用该类启动、停止, 或者操纵服务

几条建议

  • 您可以从main方法同步调用方法A(),这样后续的service start()代码将仅在A()完成后执行

  • 如果没有限制,并且您可以访问A()所在的代码,那么为什么不将windows service start()逻辑移动到方法A(),或许您可以将该逻辑放置在方法A()的末尾



  • 你有没有试过用谷歌搜索如何用c语言启动服务?正如他所说的,他是c语言的初学者。一开始,如果你之前没有使用C#的经验,谷歌的结果可能会让人很困惑。虽然我不得不承认,一个初学者从一个服务开始是我在originalposter没有见过的(我发现服务调试起来比普通c#程序更困难),你能解释一下为什么服务本身不检查文件的存在,并在必要时复制它吗?(正如您所写的程序应如何运行一样,每次启动服务时,都会复制文件,然后启动服务,而不是在必要时仅复制文件[这可能是服务运行时的任何时间,因为服务通常不会只运行一次]@Thomas是初学者并不意味着你不能使用Google谢谢你的评论。启动服务a服务不是问题。但是如何让它等到方法完成工作。谢谢,问题是服务已经启动,但功能a()尚未完成复制。谢谢,我可能会在方法A()中调用它。
    private void SomeMethod()
    {
      A();
    
      ServiceController controller = new ServiceController("WindowsServiceName");
      controller.Start();
    }