Cách hủy đăng ký khỏi một sự kiện tùy chỉnh định tuyến.Sự kiện định tuyến tùy chỉnh WPF - Cách hủy đăng ký?
Tôi có đoạn code sau (rất chuẩn cho Custom Routed Sự kiện)
//Dispatch the Video Detection Movements
public delegate void MovementRoutedEventHandler(object sender
, MovementRoutedEventArgs e);
public class MovementRoutedEventArgs : RoutedEventArgs
{
private readonly DahuaDevice _device;
private readonly byte[] _canals;
private readonly DateTime _when;
public MovementRoutedEventArgs(DahuaDevice device, byte[] canals, DateTime when)
{
_device = device;
_canals = canals;
_when = when;
}
public DahuaDevice Device
{
get { return _device; }
}
public Byte[] Canals
{
get { return _canals; }
}
public DateTime When
{
get { return _when; }
}
}
public static RoutedEvent MovementEvent = EventManager.RegisterRoutedEvent(
"Movement"
, RoutingStrategy.Tunnel
, typeof(MovementRoutedEventHandler)
, typeof(Window)
);
public event RoutedEventHandler Movement
{
add { AddHandler(MovementEvent, value); }
remove { RemoveHandler(MovementEvent, value); }
}
public void RaiseMovementEvent(DahuaDevice device, byte[] canals, DateTime when)
{
RaiseEvent(new MovementRoutedEventArgs(device, canals, when)
{
RoutedEvent = MovementEvent
});
}
Bây giờ một lớp học sẽ đăng ký vào sự kiện này với dòng này:
//Receive the Movement events
EventManager.RegisterClassHandler(
typeof(Window)
, Main.MovementEvent
, new Main.MovementRoutedEventHandler(MovementHandler));
Khi tôi đóng file ví dụ lớp, Tôi nên hủy đăng ký khỏi sự kiện (nếu không, bản sao sẽ không bị thu gom rác).
Tôi nên gọi gì? Tôi đã thử RegisterClassHandler(typeof(Window), Main.MovementEvent, **null**)
nhưng tôi nhận được ngoại lệ ...
Bất kỳ trợ giúp nào được chào đón. Cảm ơn trước.
JM
Cảm ơn rất nhiều vì câu trả lời nhanh. –
Rất vui vì tôi đã có thể giúp bạn. –