두 응용 프로그램을 모두 제어하는 경우 VB.Net로 작성된 두 개의 exe 사이에서 통신하는 가장 좋은 방법은 무엇입니까? 예를 들어 하나의 앱에서 XML 파일을 삭제하고 다른 파일과 함께 가져 오려고하지만 파일에 대한 폴링을 원하지 않습니다. 명명 된 파이프에 대해 들어 봤지만 복잡했다. 가장 효과적인 방법은 무엇입니까?2 .Net 앱간에 통신하는 가장 좋은 방법은 무엇입니까?
답변
가장 쉬운 방법은 아마도 Windows Communication Foundation을 사용하는 것입니다. 이 article에는 VB.NET으로 작성된 예제 코드가 있습니다.
파일을 폴링 할 필요가 없습니다. FileSystemWatcher을 사용하십시오.
+1 - 나를 때려 눕히세요! –
필자는 FileSystemWatcher가 항상 신뢰할만한 것은 아니며 일부 변경 사항을 잃을 수도 있음을 읽었습니다. 이 길로 가면 가끔씩 투표하여 무언가를 놓치지 않았 음을 확인하십시오. 출처 : http://stackoverflow.com/questions/239988/filesystemwatcher-vs-polling-to-watch-for-changes –
FileSystemWatcher에 구축 된 것이 경쟁 조건에 문제가있을 수 있습니다. 그것은 여전히 가장 간단한 해결책 일지 모르지만 @ajl은 이것을 피하기 위해 뭔가를 생각해 내야합니다. 아마도 첫 번째 프로그램에서 작성한 XML 파일에 "부분적"파일 확장명을 사용하고 두 번째 프로그램은 해당 확장명을 가진 파일을 피할 수 있습니다. –
한 가지 간단한 방법은 WCF를 사용하는 것입니다. 수신자 응용 프로그램은 간단한 WCF 서비스를 호스팅 할 수 있으며 보낸 사람이 파일을 보낼 수 있습니다.
.NET 4는 memory-mapped files을 지원합니다. 이것들을 사용하면 파일 시스템 사용의 필요성을 피할 수 있습니다. 그러나 프로세스가 동일한 시스템에서 실행되고 있지 않으면 다른 접근 방법을 사용해야합니다 (다른 사람들이 언급 한 것처럼 WCF는 좋은 방법입니다).
여기에 한 .exe의 파일을 편집 할 수있는 가장 쉬운 방법입니다 수있는 경우 :
한 .exe 중 하나에 FileSystemWatcher 구성 객체를 추가하고, 예를 들어 특정 파일에 필터를 설정 "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. AIR와 .NET 콘솔 앱간에 메시지를 보내고받는 가장 좋은 방법은 무엇입니까?
- 2. iOS에서 두 앱간에 통신하는 방법은 무엇입니까?
- 3. Mac과 iphone을 통신하는 가장 좋은 방법은 무엇입니까?
- 4. Bonjour와 통신하는 가장 좋은 방법은 무엇입니까?
- 5. .net과 java 사이에서 통신하는 가장 좋은 방법은
- 6. Flex가 C# 백엔드와 통신하는 가장 좋은 방법은 무엇입니까?
- 7. 동일한 컴퓨터에서 실행되는 Python 소프트웨어간에 통신하는 가장 좋은 방법은 무엇입니까?
- 8. Qt의 다른 스레드와 통신하는 가장 좋은 방법은 무엇입니까?
- 9. Adobe Flex가 Java와 통신하는 가장 좋은 방법은 무엇입니까?
- 10. 두 프로세스를 C#으로 통신하는 가장 좋은 방법은 무엇입니까?
- 11. 분산 된 프로세스가 비동기 적으로 통신하는 가장 좋은 방법은 무엇입니까?
- 12. AS3에서 상위 SWF와 하위 SWF간에 통신하는 가장 좋은 방법은 무엇입니까?
- 13. Swing GUI가 도메인 로직과 통신하는 가장 좋은 방법은 무엇입니까?
- 14. 레일 : 2 개의 앱간에 정보 공유
- 15. .NET 코드 리팩토링, 가장 좋은 방법은 무엇입니까?
- 16. 안드로이드에서 데이터베이스와 통신하는 더 좋은 방법은 무엇입니까?
- 17. Windows CE에서 교차 프로세스를 통신하는 가장 좋은 메커니즘은 무엇입니까?
- 18. .NET EXE와 COM EXE간에 통신하는 방법은 무엇입니까?
- 19. 두 앱간에 설정을 공유하는 방법은 무엇입니까?
- 20. 가장 좋은 방법은 XmlDocument (.NET)를 prettify?
- 21. .NET 2에서 3.5로 업그레이드 할 때 가장 좋은 방법은 무엇입니까?
- 22. BES와 통신하는 방법은 무엇입니까?
- 23. 서버와 안드로이드간에 통신하는 방법은 무엇입니까?
- 24. Android에서 PC로 통신하는 방법은 무엇입니까?
- 25. Doctrine 2 속성에 액세스하는 가장 좋은 방법은 무엇입니까?
- 26. PHP에서 JavaScript로 2 차원 배열을 전달하는 가장 좋은 방법은 무엇입니까?
- 27. 다른 데이터베이스의 2 개 테이블을 결합하는 가장 좋은 방법은 무엇입니까?
- 28. "2"버전의 플러그인을 적용하는 가장 좋은 방법은 무엇입니까
- 29. 파스칼에서 2 개의 레코드를 결합하는 가장 좋은 방법은 무엇입니까?
- 30. PHP에서 2 개의 데이터 구조를 동기화하는 가장 좋은 방법은 무엇입니까?
'모범 사례'보다는 '가장 효율적'을 의미합니까? '가장 효율적'을 원한다면 XML을 사용하지 않아야합니다. –
'가장 효율적'이라는 말은 분명히 두 개의 개별 프로세스를 사용하여 * 시작하지 않을 것입니다. –