繁体   English   中英

我们可以将项目类型用作Windows服务的控制台应用程序吗?

[英]can we have project type as console application for Windows services?

.Net中可以将项目类型用作Windows服务的控制台应用程序吗? 通常对于Windows服务,我们的项目类型为Windows应用程序? 这样做需要做些什么?

是的你可以。 控制台应用程序和Windows应用程序之间的区别在于Environment.UserInteractive属性。 但是,是否将“控制台应用程序”作为Windows Service运行并不重要:)因此,无需选择项目类型作为“控制台应用程序”。

但是,如果您需要控制台进行调试,则可以添加一些代码以显示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);
    }
}

因此,您将拥有一个控制台,而无需将项目类型切换到控制台应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM