• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z ładaowaniem preloadera.Wielowątkowosć. C# wpf

Object Storage Arubacloud
0 głosów
241 wizyt
pytanie zadane 18 maja 2019 w C# przez poczatkujacy_pr Nowicjusz (180 p.)
Witam,
jestem początkującym programistą i nie mam doświadczenia w programowaniu wielowątkowym. Pracuję nad aplikacja wpf, w której po wyborze pliku (shapefile) w oknie dialogowym , wykonywana jest metoda OpenFile(file) i następuje dość długi proces przetwarzania i ładowania pliku. Chciałbum, aby w tym czasie widoczny był animowany preloader, który umiśeciłem w oknie popup, stworzonym w głównym oknie aplikacji. Napisałem kod:

public void OpenShapeFile(string path)
{
Dispatcher.Invoke(new Action(() => moj_popup.IsOpen = true; }));
//metody związane z otwieraniem pliku
moj_popup.IsOpen =false;
}
Niestety popup pojawia się dopiero po załadawaniu pliku i nie wiem, dlaczego tak sie dzieje. Bardzo proszę o szybką pomoc, bo aplikację robię na zaliczenie i termin goni:((((
komentarz 19 maja 2019 przez jankustosz1 Nałogowiec (35,880 p.)
W jakim wątku wywołujesz tę metodę?

Jeżeli nie w głównym to jest to spoko. Wrzuć tylko moj_popup.IsOpen =false; do Dispatcher.Invoke, żeby się prawidłowo zamknęło
komentarz 19 maja 2019 przez poczatkujacy_pr Nowicjusz (180 p.)
Wywoływałem w głównym, więc stąd pewnie problem, ale jak próbuję wrzucić do nowego:

 public void StartThread(string file)
        {
            new Thread(OpenShapeFile).Start();
        }

to pokazuje mi że nie można bo to grupa metod????
komentarz 20 maja 2019 przez jankustosz1 Nałogowiec (35,880 p.)

No bo ta metoda przyjmuje argument.

Spróbuj tak: 

new Thread( ()=>OpenShapeFile("sciezka do pliku") ).Start();

 

komentarz 21 maja 2019 przez poczatkujacy_pr Nowicjusz (180 p.)
Dzięki wielkie. Udało mi sie zrobic

1 odpowiedź

0 głosów
odpowiedź 19 maja 2019 przez poczatkujacy_pr Nowicjusz (180 p.)
edycja 19 maja 2019 przez poczatkujacy_pr
Próbowałem w ten sposób, ale popup pojawia się dopiero po załadowaniu pliku:

Mój kod tak wygląda:

 public partial class MainWindow : Window
    {
        BackgroundWorker worker = new BackgroundWorker();

     
        public MainWindow()
        {
            InitializeComponent();

}

 private void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
          mojpopup.Dispatcher.Invoke(() => { mojpopup.IsOpen = true; });
            
        }
        private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
        //mojpopup.Dispatcher.Invoke(() => { mojpopup.IsOpen = false; });
        }

public void OpenShapeFile(string path)
        {    
         
            worker.WorkerReportsProgress = true;
            worker.DoWork += worker_DoWork;

             worker.RunWorkerAsync();
            // metody otwierające plik

         worker.RunWorkerCompleted += worker_RunWorkerCompleted;
           

}

}

Podobne pytania

0 głosów
1 odpowiedź 414 wizyt
pytanie zadane 24 marca 2018 w C# przez Squu Użytkownik (520 p.)
+1 głos
1 odpowiedź 6,001 wizyt
pytanie zadane 18 sierpnia 2016 w C# przez jankustosz1 Nałogowiec (35,880 p.)
0 głosów
1 odpowiedź 132 wizyt
pytanie zadane 1 sierpnia 2016 w C# przez jankustosz1 Nałogowiec (35,880 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...