Witam wszystkich
Tworzę aplikację w WPF na terminale dotykowe, każde okno w trybie pełnego ekranu itd. Mam pierwsze okno które jest dość proste - ma ono być oknem ładowania aplikacji gdzie w tle pobierane są ustawienia z bazy itd, mamy 2 proste elementy - label i progressbar które zmieniają się w miarę wczytywania kolejnych ustawień. Aby zmieniać treść w label i progressbar używam Dispatcher.Invoke np:
private void uruchomienieAplikacji()
{
pb_progres.Dispatcher.Invoke(() => { pb_progres.Value += 10; });
lb_opisStanuWczytywaniaApki.Dispatcher.Invoke(() =>
{ lb_opisStanuWczytywaniaApki.Content = "Ustawianie połączeń z bazą danych"; });
}
pb_progres to mój progressbar a lb_opisStanuWczytywaniaApki to mój label które są zdefiniowane w pliku xaml.
Żeby wszystko działało muszę to ubrać w wątek:
Thread ladowanieApki = new Thread(uruchomienieAplikacji);
ladowanieApki.Start();
To oczywiście tylko fragment kodu. Problem pojawia się na końcu metody uruchomienieAplikacji gdzie muszę wywołać nowe okno będące głównym oknem aplikacji a okno uruchamiania aplikacji chciałbym zamknąć.
Mam klasę "OknoGlowne":
public partial class OknoGlowne : Window
{
public OknoGlowne()
{
InitializeComponent();
}
}
Na końcu metody uruchomienieAplikacji której fragment podałem na początku postu mam tworzenie nowego okna głównego:
OknoGlowne okno = new OknoGlowne();
App.Current.MainWindow = okno;
okno.Show()
Wszystko teoretycznie działa ok tylko jest problem bo na końcu po otwarciu OknoGlowne chciałbym zamknąć okno w którym wczytywałem aplikację a ono zostaje nadal otwarte w tle. Dodatkowo OknoGlowne ma stać się głównym oknem aplikacji którego zamknięcie powoduje zakończenie aplikacji. Tego niestety nie umiem zrobić.
Wszystko działało do czasu aż nie musiałem wejść w nowy wątek ze względu na potrzebę aktualizacji progressbar - wtedy wszystko było w jednym wątku i można było zamknąć okno ładowania poprzez zwykłe this.Close(), teraz jest komunikat że okno należy do innego wątku itd. A może jakoś inaczej ogarnąć sam progressbar i label z opisem stanu ładowania?
Trochę to chaotycznie opisałem ale mam nadzieję że rozumiecie o co mi chodzi i ktoś będzie w stanie mi pomóc.
Ustawiam jeszcze wartości różnych label itd podczas wczytywania ale nie wrzucam tego żeby nie zaśmiecać obrazu sytuacji.