我有两个独立的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)
我知道有许多不同类型的进程间通信技术,但我正在寻找共享布尔状态的最简单的解决方案。
答案 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