我试图在不使用被动扩展的情况下限制事件。我会使用RX但是当我只需要限制一个事件时它看起来有点沉重。以下代码中是否存在任何问题?我特别关注种族状况。
public class MyClass
{
private System.Timers.Timer _eventThrottle;
public MyClass()
{
_myEventSource.SomeEvent += MyEventHandler;
_eventThrottle = new System.Timers.Timer(500) { AutoReset = false };
_eventThrottle.Elapsed += (o, a) =>
{
// System.Timers.Timer runs on another thread.
// Dispatcher puts us back on the UI thread.
Application.Current.Dispatcher.Invoke(() =>
{
// Handle Event
}, DispatcherPriority.Render);
};
}
private void MyEventHandler(object sender, EventArgs e)
{
_eventThrottle.Stop();
_eventThrottle.Start();
}
}