I'd like to create an application using C# that...:

* Can be run as a Windows application, with a GUI (it'll indicate progress, status, etc.)

OR
* Can be run as a Windows service, without a GUI

Is it possible? Can someone get me started?

I guess the alternative is that I could create a Windows service, and then a separate GUI application which can poll the Windows service to fetch data from it (progress, status, etc.).

In that case... how can I fetch data from the Windows service from my GUI application?