2011-01-27 4 views
0

안녕하세요 모든 온라인 코드 변환기를 사용해 보았지만이 중 하나도 작동하지 않습니다. 누군가가 나에게 이것을 vb.net에 저격하는 방법을 설명해 주실 수 있습니까?이 코드 조각을 C#에서 VB로 변환하는 데 도움이 필요합니다.

yahoo.OnBuddyAddYouRequest += delegate(object sender, string buddy, string requestMessage, ref bool bAccept) 
{ 
    object[] inVar = { sender, buddy, requestMessage,bAccept }; 
    this.Invoke(new OnBuddyAddYouRequestYahooEventHandler(OnBuddyAddYouRequest), inVar); 
    bAccept = (bool)inVar[3]; 
}; 
+0

난 당신이 아마 나는이 모든 노력이 모두 있기 때문에 어쨌든 논쟁이라고 말할 것이라고 생각, 변환해야 할 이유를 알고 있지만 코드 스 니펫이 분명히 MSIL로 끝납니다. D – Aren

+0

그게 무슨 뜻입니까? 나는 혼란스러워. –

답변

2

변경 별도의 방법으로 내부 코드 :

yahoo.OnBuddyAddYouRequest += buddyAddYouRequest; 

는 그런 다음에 코드 변환을 통해이 작업을 실행할 수 있습니다 : 다음

private void buddyAddYouRequest(object sender, string buddy, 
     string requestMessage, ref bool bAccept) 
{ 
    object[] inVar = { sender, buddy, requestMessage, bAccept }; 
    this.Invoke(new OnBuddyAddYouRequestYahooEventHandler(OnBuddyAddYouRequest), inVar); 
    bAccept = (bool)inVar[3]; 
} 

및이에 인용 한 줄을 변경 VB.NET으로 변환하십시오.

그러나 코드는 의미가 없습니다. 기존 방법 인 OnBuddyAddYouRequest을 호출하는 것처럼 보이지만 불필요한 원형 교차로 방식입니다. 필자는 저자가 멀티 스레딩 문제를 극복하려고 노력하고있을 수도 있음을 알고 있습니다. 이 경우, 당신은 훨씬 더 간단하게 쓸 수 (및 형태 보증)이 같은 :

private void buddyAddYouRequest(object sender, string buddy, 
     string requestMessage, ref bool bAccept) 
{ 
    bool bAcceptCopy = bAccept; 
    this.Invoke(new Action(() => OnBuddyAddYouRequest(sender, buddy, 
           requestMessage, ref bAcceptCopy))); 
    bAccept = bAcceptCopy; 
} 

// ... 

yahoo.OnBuddyAddYouRequest += buddyAddYouRequest; 
관련 문제