Если я контролирую оба приложения, то как лучше всего общаться между 2 exe, написанными на VB.Net. Например, я хочу удалить XML-файл из одного приложения и забрать его с другим, но мне не нужен опрос для файла. Я слышал об именованных каналах, но обнаружил, что это сложно. Какой самый эффективный способ сделать это?Лучший способ общения между приложениями .Net?
ответ
Самый простой способ, вероятно, использовать Windows Communication Foundation. В этом article приведен пример кода, написанного на VB.NET.
Вам не нужно регистрировать этот файл. Используйте FileSystemWatcher.
+1 - избили меня! –
Я читал, что FileSystemWatcher не всегда надежный, и иногда вы можете потерять некоторые изменения. Если вы идете по этому маршруту, вы все равно можете периодически опробовать, чтобы убедиться, что вы ничего не пропустили. Источник: http://stackoverflow.com/questions/239988/filesystemwatcher-vs-polling-to-watch-for-changes –
Что-то построенное на FileSystemWatcher может иметь проблемы с условиями гонки. Это все равно может быть самым простым решением, но @ajl обязательно придумает что-то, чтобы этого избежать. Возможно, используйте расширение «.partial» для файлов XML, которые все еще записываются первой программой, а вторая программа может избежать файлов с этим расширением. –
Один простой способ - использовать 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, просто должны написать команды или сообщение, которое вы хотите отправить: Этот пример записывает текущий DateTime переписав файл каждый раз.
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()
Done!
- 1. «Лучший» способ общения между .NET 1.1 и .NET 3.5
- 2. Лучший способ общения между сессиями ASP.NET?
- 3. Лучший способ для приложения Mac для общения с приложениями Windows
- 4. .Net 3.5 - Лучший способ общения с другим .Net-процессом?
- 5. Backbone: лучший способ общения лиц
- 6. Лучший способ передать объект между приложениями asp.net
- 7. Лучший способ передачи данных между двумя приложениями
- 8. Лучший способ общения с сервером в Xamarin?
- 9. Лучший способ для общения между MySQL и Java
- 10. Каков наилучший способ общения между программами в .NET и почему?
- 11. Лучший способ управлять несколькими приложениями
- 12. связь между приложениями (.NET + java)
- 13. Лучший способ предоставить услуги из .net для использования мобильными приложениями
- 14. PHP Наиболее эффективный способ общения между серверами
- 15. Связь между приложениями в .NET
- 16. Может ли NSNotificationCenter использоваться между различными приложениями для общения?
- 17. Какое оптимальное решение для общения между приложениями в контейнере Tomcat?
- 18. Лучший способ для связи между приложениями с одним приложением
- 19. Лучший способ разрешить полный доступ API между приложениями
- 20. Лучший способ связи между Java-приложениями, запущенными на одном компьютере
- 21. Ищете способ общения между какао и amfphp
- 22. Каков правильный способ общения между классами участников?
- 23. Эффективный способ общения между Flash и MySql?
- 24. лучший способ поделиться данными типа «состояние сеанса» между двумя приложениями .net.
- 25. Flash AS3 Лучший способ общения с независимыми классами?
- 26. Способ отслеживания пользователей между приложениями?
- 27. Лучший способ общения с Android-приложением для Linux daemon
- 28. Лучший способ управления несколькими приложениями в Subversion
- 29. Какая техническая разница между настольными приложениями .Net и веб-приложениями?
- 30. Лучший способ общения между левой панели TreeViewItem ViewModel и правой панели ViewModel
Уверены ли вы, что вы имеете в виду «наиболее эффективные», а не «лучшие практики»? Если вы действительно хотите «наиболее эффективно», вы, вероятно, должны держаться подальше от всего XML. –
«Самый эффективный» определенно начинается с * not *, используя два отдельных процесса. –