Reactive Framework идеально подходит для этого. Если у вас есть C # 3.5, вы можете использовать его.
Observable.FromEvent<ScrollEventArgs>(vScrollBar1, "Scroll")
.Throttle(TimeSpan.FromSeconds(2)) // Wait for two second alter all Scroll event ended
.ObserveOnWindowsForms() // Make the lambda expression run on the UI thread
.Subscribe(
e =>
{
// Update your stuff
labelControl1.Text = e.EventArgs.NewValue.ToString();
});
Вы можете избавиться от вызова ObserveOnWindowsForms
, если вы не хотите, чтобы ваш пользовательский интерфейс зависал во время работы lamda, но убедитесь, что вы правильно обращаетесь к своему компоненту пользовательского интерфейса, чтобы избежать исключения многопоточности.