如果我控制兩個應用程序,在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. 與Windows應用程序之間進行通信的最佳方式是什麼?
- 2. Android應用程序和JavaFX應用程序之間進行通信的最佳方式
- 3. ViewModel和Controller之間進行通信的最佳方式
- 4. 什麼是在兩個應用程序之間進行通信的最佳和最快的方式?
- 5. 在同一臺計算機上運行的Java應用程序之間進行通信的最佳方式
- 6. iOS應用程序和.NET應用程序之間的通信?
- 7. 在Java EE應用程序之間進行同步調用的最佳方式
- 8. Android應用程序和外部數據庫之間進行通信的最佳方式
- 9. 桌面應用程序和Windows服務之間進行通信的最佳方式
- 10. 通過本地網絡在.NET桌面應用程序之間進行通信
- 11. mmap是進程間通信的最佳方式嗎?
- 12. 移動應用程序溝通短信的最佳方式
- 13. 通過win消息在應用程序之間進行通信
- 14. 在.NET應用程序實例之間共享數據的最佳方式?
- 15. 什麼是PC和USB設備之間進行通信的最佳方式
- 16. 在活動和片段之間進行通信的最佳方式
- 17. 通過網絡在應用程序之間進行通信
- 18. .Net 2.0和.Net 4.0應用程序之間的通信
- 19. 進程間通信方式
- 20. c#類間通信的最佳方式
- 21. 在Tomcat容器中應用程序之間進行通信的最佳解決方案是什麼?
- 22. .NET進程間通信的最佳選擇是什麼?
- 23. 通過以太網進行Android Arduino通信的「最佳」方式
- 24. 在Android TabHost應用程序中完成活動間通信的最佳方式
- 25. 如何在Android上的應用程序之間進行通信
- 26. 在Swing應用程序中的組件之間進行通信
- 27. C++如何在應用程序的DLL之間進行通信?
- 28. 用C#在兩個進程之間進行通信的最佳方式是什麼?
- 29. 多個nodejs應用程序之間的進程間通信
- 30. iPhone應用程序之間的進程間通信
您確定您的意思是'最高效'而不是'最佳實踐'嗎?如果你真的想'最高效',你應該遠離任何XML。 – 2010-04-10 21:50:44
'最高效'肯定會以*不*使用兩個獨立的進程開始。 – 2010-04-10 21:58:00