파생 클래스에서 OnStart()
과 생성자 간의 차이점을 이해하려고합니다. 주위를 읽는 것으로서 처음으로 서비스를 시작한 후 (컴퓨터를 켠 후에) 생성자가 호출 된 것 같습니다. 그런 다음 원하는만큼 여러 번 서비스를 중지했다가 시작할 수 있지만 생성자는 다시 호출되지 않으므로 매번 OnStart()
메서드 만 호출됩니다. 누구든지 확인할 수 있습니까?C# service - OnStart() v 생성자
감사
파생 클래스에서 OnStart()
과 생성자 간의 차이점을 이해하려고합니다. 주위를 읽는 것으로서 처음으로 서비스를 시작한 후 (컴퓨터를 켠 후에) 생성자가 호출 된 것 같습니다. 그런 다음 원하는만큼 여러 번 서비스를 중지했다가 시작할 수 있지만 생성자는 다시 호출되지 않으므로 매번 OnStart()
메서드 만 호출됩니다. 누구든지 확인할 수 있습니까?C# service - OnStart() v 생성자
감사
는 OnStart
에 있어야 처리를 수행 할 생성자를 사용하지 마십시오. OnStart
을 사용하여 서비스 초기화를 모두 처리하십시오. 생성자는 응용 프로그램의 실행 파일이 실행될 때 호출되며 서비스가 실행될 때 호출되지 않습니다. 실행 파일은 OnStart
전에 실행됩니다. 예를 들어 계속 진행하면 SCM
이 이미 객체를 메모리에 보유하고 있기 때문에 생성자가 다시 호출되지 않습니다. OnStop
이 OnStart
대신 생성자에서 할당 된 리소스를 해제하면 필요한 리소스가 두 번째로 호출 될 때 다시 만들어지지 않습니다. MSDN
예. 생성자는로드 당 한 번 호출되며 사용자 (또는 자동화)가 서비스를 시작하고 중지 할 때 시작이 발생할 수 있습니다.
약간의 변형은 하나의 서비스 또는 여러 서비스가 포함되어 있는지에 따라 다릅니다. 여기에 실행 파일이 하나의 서비스를 포함하는 경우, docs
에서 라인의 시작은 SCM에서 선택 이며, 정지가 호출되는 경우 소멸자를 실행할 때 시스템은 서비스의 생성자를 호출합니다.
실행이 생성자의 원인 하나 개의 서비스에서 시작을 호출, 여러 서비스가 포함되어있는 경우
는 실행 파일에 을 모든 서비스에 대한 를 호출 할 수 있지만 지정된 서비스는 가 시작됩니다. 서비스의 소멸자는 모든 서비스가 중지되었을 때 함께 실행됩니다 ( ). 각 서비스가 중지 될 때마다 개별적으로 이 중지되지 않습니다.
그러나 oxilumin의 대답은 아마도 당신이 겪은 것입니다.
예, 확인할 수 있습니다. 그리고 그것은 전적으로 논리적입니다. –
이 질문에 감사드립니다. – alvonellos