2014-06-17 2 views
0

저는 VB에서 C#으로 물건을 번역하려고합니다. 그리고 최근의 문제는 이벤트와 관련이 있습니다. 나는 위의 C#을 계산기에 VB를 사용하는 경우 내가 가지고있는 원래의 이벤트 파일에서 이것을 C로 변환하는 방법

Public Event CommEvent As CommEventHandler 
Public Delegate Sub CommEventHandler(ByVal source As Rs232, ByVal Mask As EventMasks) 

그런 다음, 나는 아주 능숙하게 얻을 이제, 위에서

Protected Sub OnCommEventReceived(ByVal source As Rs232, ByVal mask As EventMasks) 
    Dim del As CommEventHandler = Me.CommEventEvent 
    If (Not del Is Nothing) Then 
     Dim SafeInvoker As ISynchronizeInvoke = Nothing 
     Try 
      SafeInvoker = DirectCast(del.Target, ISynchronizeInvoke) 
     Catch 
     End Try 
     Try 
      If (Not SafeInvoker Is Nothing) Then 
       SafeInvoker.Invoke(del, New Object() {source, mask}) 
      Else 
       del.Invoke(source, mask) 
      End If 
     Catch 
      '!!! TO-DO 
     End Try 
    End If 
End Sub 

전화

public event CommEventHandler CommEvent; 
public delegate void CommEventHandler(Rs232 source, EventMasks Mask); 

그리고,

protected void OnCommEventReceived(Rs232 source, EventMasks mask) 
{ 
    CommEventHandler del = this.CommEventEvent; 
    if (((del != null))) { 
     ISynchronizeInvoke SafeInvoker = null; 
     try { 
      SafeInvoker = (ISynchronizeInvoke)del.Target; 
     } catch { 
     } 
     try { 
      if (((SafeInvoker != null))) { 
       SafeInvoker.Invoke(del, new object[] { source, mask }); 
      } else { 
       del.Invoke(source, mask); 
      } 
     } catch { 
      //!!! TO-DO 
     } 
    } 
} 

내 proble m은 CommEventEvent입니다. C# 파일에는 이것에 대한 정의가 없지만 원래의 VB 파일에 있으며 코드 번역자가이를 기쁜 마음으로 변환합니다.

이 부분은 어디에서 발생 했습니까? C# 파일에서 어떻게 작동합니까? 그것은이 같은 날에 보이는

+1

아니야, VB 프로그램은 Me.CommEventEvent를 참조합니다. 선언은 전혀 없습니다. –

답변

1

단순히 CommEvent를 참조한다 : VB.NET 당신이 CommEventEvent으로이 참조 할 이유를 모르겠어요

CommEventHandler del = this.CommEvent; 

. 사용자 지정 특성 또는 뭔가 끝에서 단어 Attribute을 생략 할 수있는 것과 같은 언어 바로 가기 중 하나 일 수 있습니다.

+1

나는 이전에 모든 del을 this.CommEvent로 대체했으며 괜찮 았지만 이상한 것처럼 보이기 때문에 내가 옳은 일을하는지 알지 못한다. –

관련 문제