Предположим, мне нужно выполнить ресурсоемкое задание с помощью полосы прокрутки.
private void hScrollBar_ValueChanged(object sender, EventArgs e)
{
ReCalculate();
}
void ReCalculate()
{
try
{
int n = hScrollBar1.Value;
int f0 = hScrollBar2.Value;
int theta = hScrollBar3.Value;
int a = hScrollBar4.Value;
//... resource-intensive task which uses scroll-bar's values.
}
catch
{
}
}
Проблема, с которой я сталкиваюсь, заключается в том, что обработчик событий выполняется с малейшим изменением полосы прокрутки.
Мне нужно заблокировать выполнение обработчика событий, пока мышь не будет отпущена.
Итак, я попытался использовать обработчики событий мыши-ввода и отпускания-мыши, например:
bool ready = false;
private void hScrollBars_MouseEnter(object sender, EventArgs e)
{
ready = false;
}
private void hScrollBars_MouseLeave(object sender, EventArgs e)
{
ready = true;
}
вместе с проверкой вроде:
void ReCalculate()
{
if(ready)
{
try
{
int n = hScrollBar1.Value;
int f0 = hScrollBar2.Value;
int theta = hScrollBar3.Value;
int a = hScrollBar4.Value;
//... resource-intensive task which uses scroll-bar's values.
}
catch
{
}
}
}
Но это не работает.
Как я могу это сделать?