在后台运行控制台应用程序,直到我退出它

时间:2013-08-23 05:42:49

标签: vb.net multithreading console-application

我有一个Windows服务,它在启动时监视文件系统。现在我需要一个类似的控制台应用程序,它应该在后台运行。我已将代码移植到控制台应用程序,但我需要从任何外部程序手动控制此应用程序。

MyExternalProgram
{
    Start(Myconsole)
    // Do some operations.
    Exit(MyConsole)
}

与上述类似。有什么输入吗?

2 个答案:

答案 0 :(得分:1)

如果您只关闭控制台应用程序就可以了,最简单的方法是使用Process.CloseMainWindow

  

通过向主窗口发送关闭消息来关闭具有用户界面的进程。

请使用Process调用您的控制台应用程序,然后关闭它:

Dim p = new Process()
p.StartInfo.FileName = "c:\your\path\to\application.exe"
p.Start()
' p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden ' hide window
'
' do your stuff
'
p.CloseMainWindow()
' p.Kill() ' If window is hidden, you have to use Kill()

如果您不想显示此应用程序的窗口,请使用p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden,但是您必须使用Process.Kill停止它,这将立即停止该过程。

另一种方法是使用某种IPC向你的控制台应用程序发送一个退出信号,但我认为这对你的情况来说太过分了。

答案 1 :(得分:0)

您可以在VB中使用SHELL功能启动应用程序。您可以使用参数

设置为最小化
Optional ByVal Style As AppWinStyle = AppWinStyle.MinimizedFocus

然而,这只会启动您的应用实例。如果某个其他程序在自己或命令行的shell中向应用程序发送了参数,那么在大多数情况下,这将是一个单独的实例(和PID)。