我试图弄清楚这段代码的作用。它经常出错(不是以破坏系统的方式),但足以让我感到困扰。如果我能获得更多关于这里到底发生了什么的信息以及关于如何解决/防止这种情况的任何建议,那就太好了。
代码
Public Shared Sub Fire(ByVal thisEvent As [Delegate], _
ByVal ParamArray args() As Object)
If (thisEvent Is Nothing) Then
Exit Sub
End If
Dim delegates() As [Delegate] = thisEvent.GetInvocationList()
For Each synch As [Delegate] In delegates
Try
synch.DynamicInvoke(args)
Catch ex As System.Exception
Util.utEmail.SendErrorMail("Async event fire error.", ex) //Email out error
End Try
Next
End Sub
常见错误
用户消息:异步事件触发错误。
错误类型:System.Reflection.TargetInvocationException
错误消息:调用目标已引发异常。
错误位置:System.Reflection.TargetInvocationException:调用的目标已引发异常。---> System.NullReferenceException:对象引用未设置为对象的实例。
在 System.Windows.Forms.Control.MarshaledInvoke(控制调用者,委托方法,对象 [] 参数,布尔同步)
在 TSG.TransIT.UI
的 System.Windows.Forms.Control.Invoke(委托方法,对象 [] 参数)
.UIControls.ctGPViewTrip.updateTrip()
at TSG.TransIT.UI.UIControls.ctGPViewTrip.handleEditTrip(Object sender, EditTripAnnouncementEventArgs e)