首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在两个独立的.net进程之间传递标志的最简单方法

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

Stack Overflow用户
提问于 2014-06-19 20:51:17
回答 1查看 343关注 0票数 0

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

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

代码语言:javascript
运行
复制
Public FileXferProcess As Process
Dim startInfo As New ProcessStartInfo("FileXfer.exe")
startInfo.CreateNoWindow = True
startInfo.UseShellExecute = False
FileXferProcess = Process.Start(startInfo)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-25 15:09:02

最后,我使用互斥锁在各个进程之间传递一个标志。如果进程突然关闭,则不需要任何开销,也不需要处理(因为互斥将与创建它的任务一起销毁)。

下面是代码片段:

在文件传输任务中

代码语言:javascript
运行
复制
Public hMutex_Connected As Mutex
...

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

' If disconnected, destroy mutex
hMutex_Connected.Close()

在主应用程序GUI中

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24315992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档