2013-07-30 50 views
0

在VB6中,我們有以下代碼。將AddressOf從VB6轉換爲C#

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

的的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 

我們如何轉換成C#是叫 「AddressOf的TimerProc」。

在此先感謝。

問候 阿克斯

+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'代替它。 –