Situatie
Ik heb een project waarbij ik voor een deel van de applicatie een website/webapp wil laden door middel van een webbrowser component.
Dit is de opvolger van een vorige implementatie (van een ex- ex- collega), waarvan we de sourcecode niet meer hebben. Van deze implementatie is er een lang openstaande bug, dat er tijdens het laden een 'wit scherm' is te zien. Dit is dus een webbrowser component die nog niets heeft ingeladen, en dat ziet er aardig witjes uit.
Nu had ik hiervoor de oplossing/workaround bedacht van een 'bezig met laden van...' splash scherm te laten zien, en na een 'documentcompleted' event, dit splash scherm weg te halen en het form te tonen.
Ik heb dus 2 forms. Een standaard formpje met een webbrowser component erop, en een laadschermpje. Deze is via een private variabele vastgeknoopt aan het hoofd formulier, en via delegates kan ik hiervan de statustext & progressbar bijwerken. Dit werkt op zich prima (naast het laden van dit webformulier worden er nog meer dingen gedaan bij het starten).
Probleem
De webpagina lijkt pas te gaan laden nadat ik met de muis focus op het laadscherm of op het gewone scherm zet. Ik dacht eerst dat het puur het documentcompleted event was, maar ik heb nu een tail op het (Apache) serverlog gezet, en daar zie ik dat de request uberhaubt niet word gedaan.
Overwogen/getest
- BUG: DocumentComplete Does Not Fire When WebBrowser Is Not Visible - Maar deze is al uit 2003, en lijkt allang te zijn opgelost.
- Het licht toch aan het niet zichtbaar zijn van het form - noop, ook nadat ik het hoofdform zichtbaar heb gemaakt treed het nog op.
- Ik start het navigeren voordat de message loop loopt ( Application.Run ), dit schijnt vrij kritiek te zijn voor het webbrowser component
Maar ook dit lost het niet op, en nu moet de message loop toch wel draaien lijkt me (los van dat ik dit punt om een .navigate in te zetten niet heel chique vind, maar het is ter test). De .navigate van het form zet wat booleans om, handled Exceptions bij het navigeren, maar het belangrijkste is dat hij uiteindelijk ook een .Navigate doet op het webbrowser component.
Iemand een suggestie waar ik nog verder zou kunnen kijken, of nog beter, iemand een idee wat het probleem en een eventuele oplossing is?
Ik heb een project waarbij ik voor een deel van de applicatie een website/webapp wil laden door middel van een webbrowser component.
Dit is de opvolger van een vorige implementatie (van een ex- ex- collega), waarvan we de sourcecode niet meer hebben. Van deze implementatie is er een lang openstaande bug, dat er tijdens het laden een 'wit scherm' is te zien. Dit is dus een webbrowser component die nog niets heeft ingeladen, en dat ziet er aardig witjes uit.
Nu had ik hiervoor de oplossing/workaround bedacht van een 'bezig met laden van...' splash scherm te laten zien, en na een 'documentcompleted' event, dit splash scherm weg te halen en het form te tonen.
Ik heb dus 2 forms. Een standaard formpje met een webbrowser component erop, en een laadschermpje. Deze is via een private variabele vastgeknoopt aan het hoofd formulier, en via delegates kan ik hiervan de statustext & progressbar bijwerken. Dit werkt op zich prima (naast het laden van dit webformulier worden er nog meer dingen gedaan bij het starten).
Probleem
De webpagina lijkt pas te gaan laden nadat ik met de muis focus op het laadscherm of op het gewone scherm zet. Ik dacht eerst dat het puur het documentcompleted event was, maar ik heb nu een tail op het (Apache) serverlog gezet, en daar zie ik dat de request uberhaubt niet word gedaan.
Overwogen/getest
- BUG: DocumentComplete Does Not Fire When WebBrowser Is Not Visible - Maar deze is al uit 2003, en lijkt allang te zijn opgelost.
- Het licht toch aan het niet zichtbaar zijn van het form - noop, ook nadat ik het hoofdform zichtbaar heb gemaakt treed het nog op.
- Ik start het navigeren voordat de message loop loopt ( Application.Run ), dit schijnt vrij kritiek te zijn voor het webbrowser component
C#:
1
2
3
4
5
6
7
8
9
| private void BrowserForm_Load(object sender, EventArgs e) { if (!this.IsHandleCreated) { CreateHandle(); //voor message loop } this.Navigate(@"ter test hardgecode de interne url waarnaar genavigeerd moet worden"); } |
Maar ook dit lost het niet op, en nu moet de message loop toch wel draaien lijkt me (los van dat ik dit punt om een .navigate in te zetten niet heel chique vind, maar het is ter test). De .navigate van het form zet wat booleans om, handled Exceptions bij het navigeren, maar het belangrijkste is dat hij uiteindelijk ook een .Navigate doet op het webbrowser component.
Iemand een suggestie waar ik nog verder zou kunnen kijken, of nog beter, iemand een idee wat het probleem en een eventuele oplossing is?
[ Voor 0% gewijzigd door thegve op 29-11-2010 11:35 . Reden: Paar ernstige typo's weggehaald. ]