ProgressBar от внешнего процесса
Прошу помощи в решении следующих вопросов:
- как прикрутить прогресс бар к внешнему процессу, например процессу, в котором происходит обработка списка элементов из базы данных, и как сделать так чтоб в этом процессе вызвался ProgressBar и без нажатия каких либо кнопок в форме (см. второй вопрос) по мере обработки элементов в прогрессбаре показывалось бы состояние обработки? (то есть ProgressBar.Value изменяется внешним процессом/потоком)
- можно ли ProgressBar вызвать без создания формы?
- если процессов (циклов в процессе) обработки несколько, как в форме изменять количество прогрессбаров и привязывать к разным циклам обработки?
Вот пример кода основного процесса.
public class Counter
{
public static int Value = 0;
static void Main(string[] args)
{
int max = 100;
int value = 0;
Task.Run(() =>
{
Form1 form = new Form1(max);
form.ShowDialog();
});
while (value < max)
{
value++;
Value = value;
Console.WriteLine(value.ToString());
Thread.Sleep(50);
}
}
}
Вот код формы:
public partial class Form1 : Form
{
public Form1(int max)
{
InitializeComponent();
progressBar.Maximum = max;
Thread thread = new Thread(Process);
thread.Start();
}
void Process()
{
if (InvokeRequired)
{
BeginInvoke((Action)Process);
}
else
{
while (progressBar.Value < Counter.Value)
progressBar.Value = Counter.Value;
}
}
}
как вы понимаете это не работает