2016-08-25 29 views
1

我想給協程卡利樣品從C#轉換到VB的轉換進行得很順利,直到我得到這個說法在引導程序:Caliburn.CoRoutine在VB

Coroutine.Completed += (s, e) => { 
    if (e.Error != null) 
     MessageBox.Show(e.Error.Message); 
}; 

這是在配置部分引導程序和我認爲它的目的是在CoRoutine完成後攔截任何錯誤併發布到消息框中。

在VB將其轉換爲:

Coroutine.Completed += Function(s, e) 
          If e.[Error] IsNot Nothing Then 
           MessageBox.Show(e.[Error].Message) 
          End If 
         End Function 

這得到了波浪線在編輯器和VS 2015年的錯誤消息,建議你應該使用加薪事件, - - - 然而,這似乎並沒有在引導程序的這裏有意義,在我看來,Lambda的目的是處理事件。

我很想聽到任何人也在VB中使用Caliburn。每個Caliburn示例的初始轉換都是一個真正的挑戰,但對我來說更加困難,因爲我和WPF桌面應用程序而不是Silverlight一起工作,而且兩者相似,Silverlight示例呈現了很多陷阱。我現在有近20釐米的桌面樣品都在VB中,我會很樂意分享工作的圖書館,但協同程序一直是一個難以實現的魔鬼來獲得VB

工作

回答

1

使用AddHandler

AddHandler Coroutine.Completed, 
    Sub(s, e) 
     If e.[Error] IsNot Nothing Then 
      MessageBox.Show(e.[Error].Message) 
     End If 
    End Sub 
+0

我認爲它應該是'Sub ... End Sub'。 (否則罰款)。 –

+0

你是對的 – Nkosi

+0

,做到了,謝謝 – user3418258