BackgroundWorker nie pobiera wartosci z UI

0

W jaki sposob przekazac wartosci z UI, a konkretnie radiobuttonow, do BackgroundWorker'a?
to moj kod workera:

 private void Worker2()
{
    worker2.WorkerReportsProgress = true;
    worker2.WorkerSupportsCancellation = true;
    worker2.DoWork += (obj, ea) => installDrivers();
    worker2.ProgressChanged += new ProgressChangedEventHandler(progressReport);
    worker2.RunWorkerAsync();
}

a to metody ktora wykonuje:

public void installDrivers()
{
     //insDriverTxt();
    // worker2.ReportProgress(30);

    //copy desktop power profiles:
    if ((bool)Desktop.IsChecked)
    {
        DirectoryCopy("X:\\PowerProfiles\\Desktop", "C:\\Tools", true);
        worker2.ReportProgress(30);
    }
    //graphic cards:
    //geforce:
    if ((bool)geforce.IsChecked)
    { 
        DirectoryCopy("X:\\Drivers\\nVidia\\Graphics", "C:\\Tools\\Drivers\\nVidia\\Graphics", true);
        for (int i = 31; i < 40; i++)
        {
            Thread.Sleep(500);
            worker2.ReportProgress(i);
        }
        var geforce_install = Process.Start("C:\\Tools\\Drivers\\nVidia\\Graphics\\Setup.exe", "-n -s");
        geforce_install.WaitForExit();
        worker2.ReportProgress(40);
    }
} 
0

do RunWorkerAsync mozesz jako parameter przekazac dowolny obiekt (w tym przypadku obiekt z parametrami, ktore potrzebujesz).
Metoda dla DoWork powinna przyjmowac dwa parametry i wewnatrz mozesz sobie zrzutowac przekazane parametry na swoj obiekt np:

 private void worker_DoWork(object sender, DoWorkEventArgs e)
    {
        MojeParametry parameters = e.Argument as MojeParametry;
        ....
 
    }
0

a moglbys na przykladzie mojego kodu pokazac mi jak to upchnac w calosc? Jestem w sumie poczatkujacym programista, a najlepiej mi sie uczy kiedy ktos mi pokaze na przykladzie co i jak zrobic.

0

dzieki za pomoc, musialem sie z tym przespac zeby mi weszlo :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1