Toon posts:

[VB.NET] On load moet uitvoeren voor displayen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben weer eens aan het programmeren geslagen in VB.NET. Op een bepaald ogenblik klikt de gebruiker op een knop "maak fotoboek". De bedoeling is dat wanneer hij dit doet er een pop-up window verschijnt met daarin de verschillende stappen van het creatie-proces. Elke keer een stap is afgewerkt komt er een vinje naast die stap te staan.

Nu op zich is dat niet zo moeilijk om te maken maar het probleem zit mij ergens anders. Wat ik momenteel doe is gewoon na InitializeComponents() alle opdrachten plaatsen (ftp'en etc).

Alle opdrachten worden goed uitgevoerd, het enige probleem is dat de feitelijke display pas op het einde van al die opdrachten verschijnt. Hiermee wil ik dus zeggen dat hij eerst alles upload etc voor hij de display weergeeft. Dat geeft een probleem want je hebt vaak de indruk dat het programma crasht.

Ik heb alles al in een function gezet in de hoop dat het dan zou lukken maar dat mocht niet baten. Ik vond nergens in de code een aanwijziging waar ik het zou kunnen veranderen. Kan iemand helpen? (trouwens een hint over hoe je best online status checkt in vb.net is ook welkom...)

Verwijderd

Je kunt een paar dingen doen.

- Forceren met show.

- Een timer.

- Een nieuwe thread starten. (Hier geef ik de voorkeur aan mocht je daar in geïnteresseerd zijn ;) )

Verwijderd

Topicstarter
Show en Timer hebben beetje een raar effect. Als ik die gebruik zie ik ten eerste geen leesbare tekst (lijkt alsof hij alles heeft willen tonen maar de cpu zich te sterk op de rest moet focussen en dus nooit tot de tekst komt) en bovendien crasht het programma achteraf voor een of andere bizare reden. Wat is dat van die thread?

Verwijderd

Topicstarter
OK, na zoeken heb ik besloten dat ik het best gewoon wat anders aanpak. Wat ik nu wil doen is in die form waarin alles gebeurt een button plaatsen. Pas als je op de button klikt begint het proces (ik hoop dat het updaten van info (vinkjes zetten) dan wel vlot werkt).

Het enige probleem dat ik nu heb komt door mijn beperkte vb.net kennis. Ik geef vanuit mijn mainprogramma een lijst door naar deze form (een openfiledialog eigenlijk). Die lijst kan ik goed aanroepen in "Sub New". Om die button te laten werken moet ik op een of andere manier in de sub die bij de button click hoort de openfiledialog kunnen ophalen. Hoe doe ik dit? (ik hoop dat de vraag wat duidelijk is)

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Gaat het hier over winforms of over webforms?

Indien winforms: het probleem is waarschijnlijk dat je applicatie te druk bezig is met het 'werk' uit te voeren, zodat hij geen tijd heeft om je UI te updaten.
(Althans, dat zou het kunnen zijn).
Je zou ff kunnen checken door een sleep statement te gebruiken, zodat je app enkele milliseconden 'slaapt'.

[ Voor 78% gewijzigd door whoami op 26-06-2004 01:36 ]

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Verwijderd schreef op 25 juni 2004 @ 18:20:


- Een nieuwe thread starten. (Hier geef ik de voorkeur aan mocht je daar in geïnteresseerd zijn ;) )
Als je die 'opdrachten' op een andere thread uitvoert, moet je wel rekening houden met enkele dingetjes bij het updaten vn je UI; je mag nl. je UI / controls enkel updaten vanaf de thread waar die controls op gecreeërd zijn; vanaf de UI thread dus.
Je zal dus aan context switching moeten doen.

bv:
code:
1
2
3
4
5
6
7
8
9
10
11
12
void UpdateUI( object sender, EventArgs e )
{
    if( theControl.InvokeRequired )
    {
            theControl.Invoke( new EventHandler(UpdateUI), new object[] {sender, e});
    }
    else
    {
          // update control
          theControl.Checked = true;
    }
}

https://fgheysels.github.io/

Pagina: 1