2017-05-09 1 views
-1

안녕하세요.메모리 매핑 된 파일을 사용하여 vb.net proccess 통신

나는이 인텔리 사용하고 있습니다 : 같은 vb.net에 https://code.msdn.microsoft.com/Inter-process-communication-e96e94e7

private void frmMain_Load(object sender, EventArgs e) 
    { 
     communicator = new MemoryMappedFileCommunicator("MemoryMappedShare", 4096); 

     // This process reads data that begins in the position 0 and writes starting from the position 2000. 
     communicator.ReadPosition = 0; 
     communicator.WritePosition = 2000; 

     // Creates an handler for the event that is raised when data are available in the 
     // MemoryMappedFile. 
     communicator.DataReceived += new EventHandler<MemoryMappedDataReceivedEventArgs>(communicator_DataReceived); 
     communicator.StartReader(); 
    } 

    private void communicator_DataReceived(object sender, MemoryMappedDataReceivedEventArgs e) 
    { 
     var receivedMessage = System.Text.Encoding.UTF8.GetString(e.Data); 
     lstMessages.Items.Add(receivedMessage); 
     lstMessages.SelectedIndex = lstMessages.Items.Count - 1; 

     // Sends a message as a response. 
     communicator.Write("Message from Windows App: data received at " + DateTime.Now);    
    } 

을 :

Dim communicator As New MemoryMappedFileCommunicator("MemoryMappedShare", 4096) 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    ' This process reads data that begins in the position 2000 and writes starting from the position 0. 
    communicator.ReadPosition = 2000 
    communicator.WritePosition = 0 

    ' Creates an handler for the event that is raised when data are available in the MemoryMappedFile. 

    AddHandler communicator.DataReceived, AddressOf New EventHandler(Of MemoryMappedDataReceivedEventArgs)(communicator_DataReceived) 
    communicator.StartReader() 

End Sub 

Private Sub communicator_DataReceived(ByVal sender As Object, ByVal e As MemoryMappedDataReceivedEventArgs) 
    Dim receivedMessage = System.Text.Encoding.UTF8.GetString(e.Data) 
    lstMessages.Items.Add(receivedMessage) 
    lstMessages.SelectedIndex = lstMessages.Items.Count - 1 

    ' Sends a message as a response. 
    communicator.Write("Message from Windows App: data received at " + DateTime.Now) 
End Sub 

변환 후, 난 VB에서 오류가 나는이 C# 코드를 변환 .net 코드는 다음과 같습니다 : VB.NET ERROR

012 이 라인에서

는 : AddressOf뿐만 아니라 대리자를 만들기 때문에

AddHandler communicator.DataReceived, AddressOf New EventHandler(Of MemoryMappedDataReceivedEventArgs)(communicator_DataReceived) 
+0

어떤 오류? 밑줄 친 오류에 대한 그림을 보여 줬습니다 ... * 오류 메시지 * 란 무엇입니까? –

+0

최근 업데이트가 표시되지만 여전히 오류 메시지가 표시되지 않았습니다. ** ** 오류 메시지를 게시하십시오. –

+0

대리자 'System.EventHandler (Of MemoryMappedFileManager.MemoryMappedDataReceivedEventArgs)'의 생성자에 대한 유일한 인수로 'AddressOf'식 또는 람다식이 필요합니다. –

답변

0

당신은 모두 AddressOfNew EventHandler을 사용할 수 없습니다.

권장되는 솔루션으로 변경하는 것입니다

AddHandler communicator.DataReceived, AddressOf communicator_DataReceived 

다음 작품 그냥 잘하지만, 그러나 덜 읽을 수 :

AddHandler communicator.DataReceived, New EventHandler(Of MemoryMappedDataReceivedEventArgs)(AddressOf communicator_DataReceived) 
+0

내 답변을 통해 문제가 해결되면 내 게시물 왼쪽의 ** 체크/체크 표시 **를 눌러 "수락"으로 표시하십시오. - 자세한 내용은 다음을 참조하십시오. [** 답변 수락 방법은 무엇입니까? **] (https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

+0

계속 위의 방법을 시도해보십시오. 그러나 코드를 실행할 때 : 메시지가 수신되지 않습니다. –

+0

@ElikarKananeMugangane : 그것은 내가 당신을 도울 수없는 아프 다른 문제입니다. 당신이 직접 디버깅하거나 다른 질문을해야 할 것입니다. –

관련 문제