我想弄清楚这段代码的作用。它经常出错(不是以破坏系统的方式),但足以让我困扰。如果我能够获得关于这里究竟发生了什么的更多信息以及关于如何修复/防止这种情况的任何建议,那将是非常好的。VB.NET委托代码澄清
代码
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(控制呼叫者,委派方法,对象[]指定参数时,布尔同步)
在System.Windows.Forms.Control.Invoke(委托方法,对象[]参数)
在TSG.TransIT.UI.UIControls.ctGPViewTrip.updateTrip()
在TSG.TransIT.UI.UIControls.ctGPViewTrip.handleEditTrip(对象发件人,EditTripAnnouncementEventArgs E)