2013-07-30 1 views
0

으로 변환 VB6에서는 아래 코드를 사용합니다.VB6에서 AddressOf를 C#

g_CTimer.TimerID = SetTimer(0&, 0&, g_CTimer.Interval, AddressOf TimerProc) 

TimerProc 방법은 우리가 C#에서 그 호출 "AddressOf를 TimerProc"을 변환 할 방법

Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long) 
    On Error Resume Next 

    If g_CTimer Is Nothing Then Exit Sub 
    g_CTimer.ThatTime 

End Sub 

다음과 같다.

미리 감사드립니다.

감사 아치 여스는

+0

그냥 제거하십시오. 메서드 그룹은 암시 적으로 대리자로 변환됩니다. ['SetTimer (0, 0, g_CTimer.Interval, TimerProc)'] – JosephHirn

+0

[pinvoke.net] (http://www.pinvoke.net/default.aspx/user32/SetTimer.html) 웹 사이트를 사용하여 적절한 선언. .NET Timer 클래스는이 문제를 신경 쓰지 않고 이미 처리합니다. –

답변

1

C#에서 당신은 단지 AddressOf 키워드를 생략 할 수 있습니다. VB.NET에서는 명시 적으로 메서드 포인터를 인수로 전달한다는 것을 의미합니다 (이 경우 TimerProc에 대한 포인터). C#에서는 메서드 이름을 직접 사용할 수 있습니다.

그렇다면 일반적인 타이머 (Windows.Forms.Timer 또는 기타)를 사용하여이 기능을 다시 구현하는 것이 좋습니다.

+0

@Achyuth 당신은 여전히 ​​네 개의 인수를가집니다 -'AddressOf TimerProc'은 하나의 인수이고, 당신은'TimerProc'로 대체합니다. –

관련 문제