Wielo-watkowosc lub BackgroundWorker dla poczatkujacego.

0

Witam wszystkich bardzo serdecznie. Jestem tu nowy wiec jesli cos napsze nie tak prosze nie krzyczec :P
Programowaniem zajmuje sie od 1mca wiec dopiero raczkuje a juz dostalem od szefa projekt duzy jak na poczatkujacego.
Dostalem za zadanie zrobienie aplikacji ktora po zainstalowaniu windows w trybe audit mode, wyswietla okno z nazwa laptopa/komputera.
Instalator ma za zadanie wybrac model i reszte program robi sam.
Teraz o programie, wykonuje kolejno kroki:
-mappuje dysk z serwera
-czeka az uzytkownik dokona wyboru
-pobiera odpowiednie pliki (sterowniki, programy, configi)
-instaluje je

Wszystko dziala mi ladnie i pieknie z wyjatkiem odswiezania TextBlock w ktorym mam napisane rozne teksty ktore odpowiadaja czynnosci wykonywanej, tj, pobieranie plikow, instalacja itp itd.
mam ustawiona zmiane TextBlock na poczatku kazdej metody ale system jest tak zajety pobieraniem instalacja ze nie zmienia tekstu albo zmienia go za pozno. Na wolniejszych sytstemach w ogóle nic nie robi procz glownych zadan. Dowiedzialem sie ze mozna to zrobic za pomoca thread'ow albo backgroundworker'ow. Pytanie jak? Przypominam ze koduje od mniej wiecej miesiaca.

troche kodu:

tutaj mam obsluge buttona ktory odpala wszystko po kolei, zadna z pierwszych 5 linijek nie dziala w tym buttonie, odrazuprzechodzi do CopyTestTools();

        private void install_btn_Click(object sender, RoutedEventArgs e)
        {
            installcover.Visibility = System.Windows.Visibility.Visible;
            loading_text.Visibility = System.Windows.Visibility.Visible;
            back_btn.Visibility = System.Windows.Visibility.Hidden;
            install_btn.Visibility = System.Windows.Visibility.Hidden;
            loading_text.Text = "Preparing Install...";
            CopyTestTools();
        } 

i przykladowa metoda:

        public void CopyTestTools()
        {
            loading_text.Text = "Copying test tools from server...";

            DirectoryCopy("X:\\Testing\\TestingShortcuts", "C:\\Users\\Administrator\\Desktop\\Testing", true);
            DirectoryCopy("X:\\Testing\\Testing64", "C:\\Configs\\Testing", true);
            DirectoryCopy("X:\\Drivers\\Mediatek-Ralink\\MediatekInstaller\\USB", "C:\\Configs\\Drivers\\Mediatek-Ralink\\MediatekInstaller", true);
            installDrivers();
        } 

Jakies sugestie?

0

Zrob Refresh formy po zmianie tego napisu. Powinno pomoc na odswiezenie napisu.

Do watku lepiej wrzucic te kopiowanue IMO niz zmiane tekstu. Mniej babrania ;) watki nie sa trudne, a wiedza przyda Ci sie w innych jezykach ;)

0

Nie wątku, bo nie ma sensu się bawić w ręczną synchronizację, skoro można to wygodnie zrobić przez BackgroundWorker.

0

jak juz pisalem jestem poczatkujacy, jakas podpowiedz jak wprowadzic to w kod?

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