你基本上有两个选择.在服务上公开API,然后可以从UI应用程序调用该API或使服务能够作为winforms应用程序或服务运行.
第一个选项非常简单 - 使用远程处理或WCF来公开API.
第二个选项可以通过将应用程序的"内容"移动到一个单独的类中来实现,然后创建一个服务包装器和一个win-forms包装器,它们都会调用您的"guts"类.
static void Main(string[] args) { Guts guts = new Guts(); if (runWinForms) { System.Windows.Forms.Application.EnableVisualStyles(); System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false); FormWrapper fw = new FormWrapper(guts); System.Windows.Forms.Application.Run(fw); } else { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new ServiceWrapper(guts) }; ServiceBase.Run(ServicesToRun); } }