해야합니다하여 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에서 상속받습니다. 내가 한 번만 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
msarchet : CrucibleOxidizedMass 속성에 20의 값을 할당하면 Sub Main()에서 Measurement 클래스의 PropertyChanged 이벤트가 발생합니다. 이 클래스에서는 적절한 조건에서 OnCrucibleOxidizedMassChanged를 발생시키는 RaiseMassChanged 하위에 PropertyChanged 이벤트를 위임했습니다. 이 이벤트는 모듈의 OnChanged 하위가 호출되도록합니다 (그리고 "보고서를 보낼 시간"을 한 번만 인쇄하십시오). 희망이 내 문제를 명확히합니다. 감사. – blueshift