我们可以将项目类型作为Windows服务的控制台应用程序吗
本文关键字:服务 Windows 控制台 应用程序 项目 类型 我们 | 更新日期: 2023-09-27 18:20:13
我们可以在.Net中使用项目类型作为Windows服务的控制台应用程序吗?通常,对于windows服务,我们的项目类型为windows应用程序?这样做有什么必要?
可以。控制台应用程序和Windows应用程序之间的区别在Environment.UserInteractive属性中。但是,如果您将Console应用程序作为Windows服务运行,这并不重要:)因此,无需将项目类型选择为Console应用程序。
但是,如果您需要一个控制台进行调试,您可以添加一些代码来显示Windows应用程序的控制台:
internal static class ConsoleAllocator
{
[DllImport(@"kernel32.dll", SetLastError = true)]
static extern bool AllocConsole();
[DllImport(@"kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport(@"user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
const int SwHide = 0;
const int SwShow = 5;
public static void ShowConsoleWindow()
{
var handle = GetConsoleWindow();
if (handle == IntPtr.Zero)
{
AllocConsole();
}
else
{
ShowWindow(handle, SwShow);
}
}
public static void HideConsoleWindow()
{
var handle = GetConsoleWindow();
ShowWindow(handle, SwHide);
}
}
因此,您将拥有一个控制台,无需将项目类型切换到控制台应用程序。