0
应该我有两个派生类(子,孙子女)类:PropertyChanged事件触发两次,不
BaseSample
|-ProcessData
|-Measurement
在对测量类属性更改我提出一个OnCrucibleOxidizedMassChanged事件:
Protected Sub AddEventHandler(ByVal thisMeasurement As CalcinerDataAccess.O2Measurement)
AddHandler thisMeasurement.PropertyChanged, AddressOf RaiseMassChanged
End Sub
Protected Sub RaiseMassChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim CrucibleOxidizedMassReadyToReport As Boolean = _
(TypeOf e Is System.ComponentModel.PropertyChangedEventArgs) AndAlso _
(CType(e, System.ComponentModel.PropertyChangedEventArgs).PropertyName = "CrucibleOxidizedMass" And _
CType(sender, CalcinerDataAccess.O2Measurement).CrucibleOxidizedMass IsNot Nothing)
If CrucibleOxidizedMassReadyToReport Then
RaiseEvent OnCrucibleOxidizedMassChanged(sender, e)
End If
End Sub
出于测试目的,我有一个模块来测试这种事件引发行为。请注意,ToteBinSample继承自BaseSample。在main(),我只是测试,当你改变CrucibleOxidizedMass的价值会发生什么:
Sub Main()
thisSample = New SampleTypeManager.SampleTypes.ToteBinSample
AddHandler thisSample.OnCrucibleOxidizedMassChanged, AddressOf OnChanged
thisSample.SampleData.ProcessDatas(0).O2Measurements(0).CrucibleOxidizedMass = 20
Console.WriteLine("Done...")
Console.Read()
End Sub
Private Sub OnChanged(ByVal sender As Object, ByVal e As EventArgs)
Console.WriteLine("Time to send report!")
End Sub
然而,给onChanged子被调用两次,即使我只值分配给CrucibleOxidizedMass一次。
你有什么想法为什么它会被触发两次以及我如何纠正它?
你可以显示你在哪里举办初始活动。 – msarchet 2011-03-14 14:11:47
msarchet:在Sub Main()中,当我将20的值赋给CrucibleOxidizedMass属性时,这应该触发Measurement类中的PropertyChanged事件。在这个类中,我将PropertyChanged事件委托给RaiseMassChanged子类,它应该在正确的条件下提高OnCrucibleOxidizedMassChanged。正是这个事件导致模块中的OnChanged子被调用(并且只打印一次“发送报告的时间!”)。希望这可以澄清我的问题。谢谢。 – blueshift 2011-03-14 15:01:41