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:
ppublic 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;
}
}
Niestety popup pojawia się dopiero po załadawaniu pliku i nie wiem, dlaczego tak sie dzieje. Bardzo prosze o pomoc