在两个独立的.net进程之间传递标志的最简单方法

时间:2014-06-19 20:51:17

标签: vb.net ipc

我有两个独立的vb.net应用程序。一个是GUI前端WinForm,另一个是控制台应用程序,它处理文件传输并在后台运行。文件传输应用程序监视目录,当找到新文件时,它会将文件传输到目标。它检查远程目标是否可访问。我想有一个标志,指示文件传输任务可以连接到远程目标并在GUI上显示此状态。

GUI应用程序如何启动文件传输控制台应用程序的示例:

Public FileXferProcess As Process
Dim startInfo As New ProcessStartInfo("FileXfer.exe")
startInfo.CreateNoWindow = True
startInfo.UseShellExecute = False
FileXferProcess = Process.Start(startInfo)

我知道有许多不同类型的进程间通信技术,但我正在寻找共享布尔状态的最简单的解决方案。

1 个答案:

答案 0 :(得分:0)

我最终使用互斥锁在不同进程之间传递一个标志。如果进程突然关闭(因为互斥锁将被创建它的任务破坏),这不需要任何开销和处理。

以下是代码段:

在文件传输任务中

Public hMutex_Connected As Mutex
...

' If connected, set mutex
hMutex_Connected = New Mutex(True, "FileXfer_Connected")
...

' If disconnected, destroy mutex
hMutex_Connected.Close()

在主应用程序GUI中

Public Function IsConnected() As Boolean
  Dim bConnected As Boolean = False
  Try
     Mutex.OpenExisting("FileXfer_Connected")
     bConnected = True
  Catch ex As WaitHandleCannotBeOpenedException
     ' "Mutex does not exist."
  Catch ex As UnauthorizedAccessException
     ' "Unauthorized access: " & ex.Message
  Catch ex As Exception
     ' ex.ToString
  End Try

  Return bConnected
End Function