To create the Windows Service, let's start with a new .NET Core 3 console application:
You may wish to separate parts of this application into their own class libraries if you choose to extend this application. Clearly, the functionality that we're using is not restricted to a console application. If the functionality was in its own class, you could simply call it from a desktop application.
The next step is to install the Windows Compatibility NuGet package:
Install-Package Microsoft.Windows.Compatibility
This will allow us to create a Windows Service.
It's worth noting at this stage that, despite being .NET Core, this application will not be cross-platform; in fact, any application using the Windows Compatibility Pack will not be.
Now that we've installed this, we can create the service. We'll need a class similar to this...