[C#] Progress bar w drugiej formie z wątku


(Marcin Obala) #1

Witam

Chciałbym zrobić taki trick. W wątku głównym uruchamiam wątek poboczny, odpalam nową formę na której jest tylko label i progress bar, z wątku pobocznego uruchomionego w pierwszej formie modyfikuje label i progress bar w drugiej formie. Jak to zrobić? Jak próbuje na chłopski rozum to forma numer 2 i tak wygląda na zawieszoną. Ustawiłem label i progressBar jako public a następnie edytuję tak

ProgressBarForm foremka = new ProgressBarForm();

foremka.label1.text = "costam"

Tu jest błąd o dostępie z wątku.

ProgressBarForm foremka = new ProgressBarForm();

SetText(foremka.label1,"costam");

gdzie SetText to funkcja z Invoke. Dodatkowo SetText przerzuciłem do nowej formy i robię tak:

ProgressBarForm foremka = new ProgressBarForm();

foremka.SetText("costam");

i jest dalej tak samo. Jak sprawić aby druga forma nie sprawiała wrażenie zawieszonej?


#2

3 sposoby na nie zawieszanie formy to

Sprawdź wyświetlanie tej formy jako ShowDialog lub Show (chyba Show powinno być)

Nie pomaga? Application.Run(form);

Nie pomaga? W miejscu odświeżania progressbara w kodzie 'zawieszonej' formy daj Application.DoEvents();

Pozdrawiam!


(Marcin Obala) #3

Miałem Forma.Show() w wątku zamiast przed wątkiem. Już wszystko działa jak należy.