如果我控制两个应用程序,在VB.Net中编写的2个exe文件之间进行通信的最佳方式是什么。例如,我想从一个应用程序中删除一个XML文件,并将其与另一个应用程序一起提取,但我不想为该文件进行轮询。我听说过命名管道,但我发现它很复杂。什么是最有效的方法来做到这一点?2 .Net应用程序之间进行通信的最佳方式?
回答
最简单的方法可能是使用Windows Communication Foundation。这个article有用VB.NET编写的示例代码。
您不必轮询文件。使用FileSystemWatcher。
+1 - 击败我吧! – 2010-04-10 21:43:55
我读过FileSystemWatcher并不总是可靠的,你有时可能会失去一些改变。如果你走这条路线,你可能仍然需要不时地进行轮询,以确保你没有遗漏任何东西。资料来源:http://stackoverflow.com/questions/239988/filesystemwatcher-vs-polling-to-watch-for-changes – 2010-04-10 21:47:24
构建在FileSystemWatcher上的东西可能会遇到竞争条件问题。它可能仍然是最简单的解决方案,但@ajl一定要想出一些办法来避免这种情况。也许在仍然由第一个程序编写的XML文件上使用“.partial”文件扩展名,第二个程序可以避免使用该扩展名的文件。 – 2010-04-10 21:53:38
一个简单的方法是使用WCF。接收器应用程序可以托管一个简单的WCF服务,并且发送者可以将文件发送给它。
.NET 4包括对memory-mapped files的支持。有了这些,你甚至可以避免使用文件系统。但是,如果进程不在同一台机器上运行,则必须使用其他方法(如其他方法所述,WCF将是一个好的方法)。
如果你可以在这里编辑的.exe的文件是最简单的方法:
添加FileSystemWatcher的对象的.exe文件之一,一个过滤器设置为如特定文件“commands.txt中”
FileSystemWatcher1.Path = Application.StartupPath
FileSystemWatcher1.NotifyFilter=NotifyFilters.LastWrite
FileSystemWatcher1.Filter = "Commands.txt"
FileSystemWatcher1.EnableRaisingEvents = True
主演/停止监视,设置路径和EnableRaisingEvents属性为真或假
这是引发事件时,该文件的变化:
Private Sub FileSystemWatcher1_Changed(sender As System.Object, e As System.IO.FileSystemEventArgs) Handles FileSystemWatcher1.Changed
'Open the file and read the content.
'you can use your own commands
End Sub
这样,当文件更改时,您只会得到一个事件,并且不需要使用定时器或其他任何东西。
另一个.exe文件,只需要编写的命令或要发送的消息: 这个例子将当前日期时间,每次覆盖文件。
Dim Timestamp() As Byte = System.Text.Encoding.Default.GetBytes(Now.ToString)
Dim Fs As System.IO.FileStream
Fs = New System.IO.FileStream("Commands.txt", FileMode.Create, FileAccess.Write)
Fs.Write(Timestamp, 0, Timestamp.Length - 1)
Fs.Close()
完成!
- 1. Android应用程序和JavaFX应用程序之间进行通信的最佳方式
- 2. ViewModel和Controller之间进行通信的最佳方式
- 3. 在同一台计算机上运行的Java应用程序之间进行通信的最佳方式
- 4. iOS应用程序和.NET应用程序之间的通信?
- 5. mmap是进程间通信的最佳方式吗?
- 6. 通过win消息在应用程序之间进行通信
- 7. 移动应用程序沟通短信的最佳方式
- 8. 在活动和片段之间进行通信的最佳方式
- 9. 在.NET应用程序实例之间共享数据的最佳方式?
- 10. .Net 2.0和.Net 4.0应用程序之间的通信
- 11. 在Tomcat容器中应用程序之间进行通信的最佳解决方案是什么?
- 12. 通过以太网进行Android Arduino通信的“最佳”方式
- 13. 如何在Android上的应用程序之间进行通信
- 14. C++如何在应用程序的DLL之间进行通信?
- 15. .NET进程间通信的最佳选择是什么?
- 16. 在Android TabHost应用程序中完成活动间通信的最佳方式
- 17. 如何在Android中的2个应用程序之间进行通信:
- 18. C++和vb.net应用程序之间的进程间通信
- 19. 用C#在两个进程之间进行通信的最佳方式是什么?
- 20. 在Java SE和Java EE应用程序之间进行通信
- 21. 如何在2个java程序之间进行通信?
- 22. .NET程序之间的通信
- 23. 内核和用户应用程序之间进行通信的方法
- 24. 如何在python和mac应用程序之间进行通信?
- 25. 如何在iOS应用程序和php之间进行通信?
- 26. 如何在Windows应用程序和Silverlight之间进行通信?
- 27. WPF +在多个应用程序实例之间进行通信
- 28. 如何在两个应用程序之间进行通信?
- 29. iPhone/Objective C - ViewController之间的通信/实现的最佳方式?
- 30. Intranet应用程序之间的通信
您确定您的意思是'最高效'而不是'最佳实践'吗?如果你真的想'最高效',你应该远离任何XML。 – 2010-04-10 21:50:44
'最高效'肯定会以*不*使用两个独立的进程开始。 – 2010-04-10 21:58:00