Мне нужно обновить программу, которую я сделал, когда еще 3 месяца был в офисе.И я обнаружил, что код не чистый и его нелегко изменить.
Я сделал так, чтобы каждый метод вызывался в фоновом режиме.И я создал несколько фоновых рабочих для каждой задачи, которая может быть выполнена сразу.
Поэтому я планирую сделать код чище и проще в обслуживании.
Я создал класс и унаследовал BackgroundWorkerкак показано ниже в моем коде
public class Bgw : BackgroundWorker
{
BackgroundWorker worker;
public int ProcessId { get; set; }
public object[] ProcessData { get; set; }
public Bgw(int i, object[] obj)
{
ProcessId = i;
ProcessData = obj;
worker = new BackgroundWorker();
worker.DoWork += Worker_DoWork;
worker.WorkerSupportsCancellation = true;
worker.WorkerReportsProgress = true;
worker.RunWorkerCompleted += Worker_RunWorkerCompleted;
worker.ProgressChanged += Worker_ProgressChanged;
worker.RunWorkerAsync();
}
public void Worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
}
public void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
public void Worker_DoWork(object sender, DoWorkEventArgs e)
{
if (ProcessId == 1)
{
//executed my code here
}
}
}
Но с кодом выше.Как я могу уведомить об изменениях в моих элементах управления, если я вызываю класс следующим образом
var obj = new object[3];
obj[0] = 1;
obj[1] = PdfPath;
obj[2] = EpubPath;
var work = new Bgw(1, obj);
Или есть ли лучший способ сделать это?Я знаю, что мне нужно использовать ProgressChanged.Но как я могу получить эти изменения от того, где я назвал этот класс?
Спасибо
Редактировать: Если я собираюсь использовать async и ждать, как это
class Program
{
public async static void TestAsyncAwaitMethods()
{
await Task.Run(() =>
{
for (var i = 0; i <= 5000000; i++)
{
UpdateUI(i);
}
});
}
private static void UpdateUI(int i)
{
Console.WriteLine("Update the UI: " + i);
}
}
Ивызовите метод TestAsyncAwaitMethods ()
Как я могу обновить свой графический интерфейс.Когда метод находится в другом классе, а свойство, которое я хочу обновить, находится в другом классе (я использую шаблон mvvm).