У меня есть следующий класс:Запуск метода и обновления ProgressBar с помощью TPL
class MyClass
{
public void timeConsumingCode(){
for(int i=0; i<100; i++)
{
Threading.Thread.Sleep(1000);
}
}
}
, а затем у меня есть мой Form1 код:
private void btn_RunTimeConsumingCode_Click(object sender, EventArgs e)
{
Task loadMasterFile = Task.Factory.StartNew(() =>
{
MyClass myclass = new MyClass();
myClass.timeConsumingCode();
});
}
до сих пор все работает отлично. Однако я добавил индикатор прогресса в форме, и я хочу обновить его на основе значения i
. если i=34
, то 34% сделано.
Я мог бы invoke
свойство индикатора выполнения из timeConsumingCode()
изменить значение, но я хочу, чтобы класс был как можно более независимым от формы, чтобы в будущем его можно было портировать в другие приложения.
Есть ли способ, которым я могу изменить значение моей панели прогресса, не заставляя MyClass
зависеть от формы1?
Я надеюсь, что было достаточно ясно
Если это WinForms, класс «BackgroundWorker» отлично подходит для сценария такого типа: http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx – DonBoitnott