Aplikacja na samym początku działania odpala wątek, który pracuje do końca jej działania. po Jakimś czasie użytkownikowi wyświetlane jest nowe okno, na którym później wątek z pierwszego okienka wykonuje przeróżne operacje.
Drugie okno uruchamiam w następujący sposób.
window = new Form1();
windowThread = new Thread(() => window.ShowDialog());
windowThread.Start();
Próbowałem innych sposobów ale nie wszystko działało dobrze, gdzieś znalazłem aby uruchomić w powyższy sposób i działa.
W póżniejszym stadium aplikacja dodaje do drugiego okienka kontrolke DataGridView - i tutaj występuje mój problem. Gdy używam skrótu klawiszowego Ctrl+C w DataGridView apliakcja wywala nastepujący wyjątek w metodzie ShowDialog():
ThreadStateException
Bieżący wątek musi być ustawiony na tryb jednowątkowego apartamentu, aby można było wykonywać wywołania OLE. Upewnij się, że w funkcji Main jest zaznaczony element STAThreadAttribute.
próby które podjąłem do tej pory w celu wyeliminowania wyjątku:
- zmieniać STAThreadAttribute na MTAThreadAttribute i odwrotnie - nic nie dało
- nadpisac akcje kliknięcia jakiegokolwiek klawisza w gridView - nic nie dało
- wyłapać wyjątek - okno aplikacji się zamyka - chciałbym tego uniknąć.
jakieś pomysły jak to ominąć / co robię źle? / jak taką sytuację rozwiązać?
z góry dziękuję za wszelkie uwagi.