C# + Flash - mam dwa wątki, ale program robi exit, czyżby potrzebny był jakiś SLEEP ?

0

Witam

Zrobiłem forme z flashem ( ręcznie osadziłem tam flasha itd ), potem utworzyłem dwa nowe wątki, dla takich form.
Formy pokazały się poprawnie z flashem, ale potem program się wyłączył, nie pokazując błędu.
Czyżby w przypadku wątków, był wymagany jakiś SLEEP lub coś podobnego ?
To wyglądało tak, jakby wszystko było poprawnie, tyle że na końcu wątek
sam się unicestwił i forma jedna i druga zniknęły.

Proszę o podpowiedź.

 
  Thread thr0 = new Thread(watek_1); // uruchamia jako nowy wątek
            thr0.SetApartmentState(ApartmentState.STA);
            thr0.Start();

  Thread thr1 = new Thread(watek_2); // uruchamia jako nowy wątek
            thr1.SetApartmentState(ApartmentState.STA);
           thr1.Start();



void watek_1()
{
            var forma = new Window_Model();

            forma.Show();
            forma.load_movie();
}

void watek_2()
{
            var forma = new Window_Model();

            forma.Show();
            forma.load_movie();
}
0

Przede wszystkim wszystkie elementy GUI powinny być tworzone w głównym wątku aplikacji. Jeśli potem jakieś obiekty tworzone w innych wątkach pracują w jakiś sposób na elementach GUI, musi to być odpowiednio synchronizowane. W C# robi się to za pomocą np. BeginInvoke (google). Twój program działa tak, jak ma działać. Uruchamiany jest wątek. Tworzona jest forma, forma jest pokazywana, film jest wczytywany. Na tym kończy się praca wątku (nie wiemy jeszcze, co masz w load_movie()). A skoro wątek jest zakończony, to generalnie wszystko Ci wraca do miejsca, z którego wywoływałeś te wątki. Jeśli jest to jakiś main aplikacji, no to aplikacja się kończy, bo nie ma dalej nic do roboty. Ponadto ten kod powoduje memory leaki. Forma musi być zwalniana przez dispose, a tu nigdzie nie jest.

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