Суть проблемы простая: устанавливая значения контрола из другого потока, ты рискуешь словить эксепшен.
Решение:
public static class ControlExtentions
{
///
/// Вызов делегата через control.Invoke, если это необходимо.
///
/// Элемент управления
/// Делегат с некоторым действием
public static void InvokeIfNeeded(this Control control, Action doit)
{
if (control.InvokeRequired)
control.Invoke(doit);
else
doit();
}
}
и вызов nextLineProgressBar.InvokeIfNeeded(()=>nextLineProgressBar.Minimum = 0);
А смысл этого действа в том что при присвоении значения из другого потока, WinForm очень сильно ругается.
Подсмотрено тут http://sergeyteplyakov.blogspot.com/2009/03/windows-forms-controlinvoke.html
PS можно конечно и старым методом описанным на MSDN, но так по моему красивей
Решение:
public static class ControlExtentions
{
///
/// Вызов делегата через control.Invoke, если это необходимо.
///
/// Элемент управления
/// Делегат с некоторым действием
public static void InvokeIfNeeded(this Control control, Action doit)
{
if (control.InvokeRequired)
control.Invoke(doit);
else
doit();
}
}
и вызов nextLineProgressBar.InvokeIfNeeded(()=>nextLineProgressBar.Minimum = 0);
А смысл этого действа в том что при присвоении значения из другого потока, WinForm очень сильно ругается.
Подсмотрено тут http://sergeyteplyakov.blogspot.com/2009/03/windows-forms-controlinvoke.html
PS можно конечно и старым методом описанным на MSDN, но так по моему красивей