Hallo allemaal
Ik heb hier een probleem waar behoorlijk wat code achter zit dus ipv al mn code te pasten ga ik het proberen schematisch uit te leggen.
MainApp maakt dus een nieuwe serverListener object aan die in de constructor een nieuwe thread start met een UDP client erin (dit maakt overigens niet veel uit). Het serverListener object krijgt overigens een incomingFileHandler delegate mee met als target een private methode van this (een instantie van MainApp dus).
Ik moet wel even erbij vermelden dat MainApp ook een WinForm is die bij het starten geminimaliseerd wordt en niet wordt weergeven in de taakbalk en alleen een NotifyIcon als 'interface' heeft. Ik weet niet of dit wat uitmaakt.
Nu wil ik IN deze delegate een nieuwe WinForm laten openen
Maar ik krijg dit als resultaat (zoals je kan zien wordt het gehele venster niet getekend).
Mijn gok is dat de thread gestart door serverListener teveel CPU in beslag neemt om myForm() de kans geven ze events goed af te handelen, maar ook de prioriteit van die thread op laag zetten lukt niet.
Overigens is het niet zo dat de thread blijft wachten tot myForm gesloten is want uit mn debug log blijkt dat de thread weer verder gaat met luisteren nadat het venster geopend is:
Als ik ipv myForm.Show() myForm.ShowDialog() gebruik, wordt het weer wel goed gedaan maar dan stopt de server met het luisteren naar binnenkomende requests totdat het venster gesloten is (logisch).
Ik heb ook geprobeerd om een nieuwe thread te maken en daarin een nieuwe instantie van myForm, maar dit werkt ook niet.
Weet iemand hoe ik dit probleem oplos?
Alvast bedankt
Ik heb hier een probleem waar behoorlijk wat code achter zit dus ipv al mn code te pasten ga ik het proberen schematisch uit te leggen.
code:
1
2
3
| MainApp > serverListener > (thread) > myForm
> myForm
> myForm |
MainApp maakt dus een nieuwe serverListener object aan die in de constructor een nieuwe thread start met een UDP client erin (dit maakt overigens niet veel uit). Het serverListener object krijgt overigens een incomingFileHandler delegate mee met als target een private methode van this (een instantie van MainApp dus).
Ik moet wel even erbij vermelden dat MainApp ook een WinForm is die bij het starten geminimaliseerd wordt en niet wordt weergeven in de taakbalk en alleen een NotifyIcon als 'interface' heeft. Ik weet niet of dit wat uitmaakt.
Nu wil ik IN deze delegate een nieuwe WinForm laten openen
code:
1
2
| myForm f = new myForm(); f.Show(); |
Maar ik krijg dit als resultaat (zoals je kan zien wordt het gehele venster niet getekend).
Mijn gok is dat de thread gestart door serverListener teveel CPU in beslag neemt om myForm() de kans geven ze events goed af te handelen, maar ook de prioriteit van die thread op laag zetten lukt niet.
Overigens is het niet zo dat de thread blijft wachten tot myForm gesloten is want uit mn debug log blijkt dat de thread weer verder gaat met luisteren nadat het venster geopend is:
code:
1
2
3
4
5
| ** SERVER - waiting for request
** SERVER - got request from 127.0.0.1:8081
// hier wordt het venster geopend en blijft open
** SERVER - waiting for request // we gaan weer verder
// met het venster open |
Als ik ipv myForm.Show() myForm.ShowDialog() gebruik, wordt het weer wel goed gedaan maar dan stopt de server met het luisteren naar binnenkomende requests totdat het venster gesloten is (logisch).
Ik heb ook geprobeerd om een nieuwe thread te maken en daarin een nieuwe instantie van myForm, maar dit werkt ook niet.
Weet iemand hoe ik dit probleem oplos?
Alvast bedankt