[VB.NET] Main loop?

Pagina: 1
Acties:

Onderwerpen


  • nephilimcrt
  • Registratie: Juni 2011
  • Laatst online: 09-09 18:12

nephilimcrt

Mad Scientist

Topicstarter
Ik heb het gevoel dat ik een hele stomme vraag stel, maar ik kan het antwoord nergens op 't internet vinden. Please go easy on me ;)

Mijn vraag is eigenlijk heel simpel: Hoe kan ik ervoor zorgen dat een VB.NET applicatie die ik schrijf, na het opstarten automatisch in een loopje terecht komt dat voor eeuwig loopt en waarin je allerlei bewerkingen kunt doen?

Er is de Form1_Load, maar die wordt al geraised voordat de Form geladen is. En dat is nou ook weer niet de bedoeling.

En je kunt het startpunt van applicatie veranderen naar de sub Main(), maar die looped ook niet, ...geloof ik.

Hoe doen echte programmeurs dit? :P

Tapping progress on the shoulder and saying: "More forwards, please!".


  • Ryan_
  • Registratie: Februari 2009
  • Laatst online: 13:53
Dat kan met een timer :)

[ Voor 36% gewijzigd door Ryan_ op 10-11-2011 19:25 ]


  • P-Storm
  • Registratie: September 2006
  • Laatst online: 12:56
Wat wil je precies bereiken? Is het wel nodig om een form te hebben. Meestal is een oneindige loop zonder threading of andere zaken helemaal niet goed. Als we weten wat je wilt maken kunnen we beter advies geven.

Een timer zoals hier boven gesteld wordt is een stuk code die periodiek wordt aangeroepen, is niet oneindig. Maar nog steeds, watheb je nodig?

[ Voor 25% gewijzigd door P-Storm op 10-11-2011 19:27 . Reden: Toevoeging van post hierboven ]


  • Mavamaarten
  • Registratie: September 2009
  • Nu online

Mavamaarten

Omdat het kan!

Je kan het doen met een Timer of een BackgroundWorker, die je in een loop brengt.
Leg eens uit wat je juist wil doen ? Je kan ook gewoon een loop maken in form_load, maar zorg wel dat je geen loop maakt zonder een application.doevents().

Android developer & dürüm-liefhebber


  • nephilimcrt
  • Registratie: Juni 2011
  • Laatst online: 09-09 18:12

nephilimcrt

Mad Scientist

Topicstarter
Nouja, ik wil het voor een aantal doeleinden gebruiken. Maar één van de voorbeelden is een form dat iedere 5 seconden een afbeelding van m'n webcam afplukt en dat weergeeft. Dan heb je dus een loopje nodig dat elke 5 seconden het plaatje ververst.

Tapping progress on the shoulder and saying: "More forwards, please!".


  • Mavamaarten
  • Registratie: September 2009
  • Nu online

Mavamaarten

Omdat het kan!

In dat geval gebruik je best een timer als "loopje". Maareu, zeg eens heel eerlijk, is het niet beter om met iets heel simpels te beginnen? Je weet niet wat een timer is, maar je wilt wel webcam images "plukken"... ?

Android developer & dürüm-liefhebber


  • P-Storm
  • Registratie: September 2006
  • Laatst online: 12:56
Dat klinkt heel erg als een timer. Een programma hoeft niet altijd te wachten in code, en door een timer te gebruiken verminder je de cpu verbruik ipv een oneindige loop. En ben met de bovenganger eens dat images van je webcam afhalen niet een van de makkelijkte onderwerpen is om mee te beginnen.

[ Voor 27% gewijzigd door P-Storm op 10-11-2011 19:31 ]


  • Ryan_
  • Registratie: Februari 2009
  • Laatst online: 13:53
Visual Basic .NET:
1
2
3
4
5
6
7
8
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Enabled = True
        Timer1.Interval = 5000
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        'Hier de loop
    End Sub

  • Mavamaarten
  • Registratie: September 2009
  • Nu online

Mavamaarten

Omdat het kan!

@Ryan__ Wat is er mis om de timer properties juist te zetten in designer? Dat bespaart code ;)

Android developer & dürüm-liefhebber


  • nephilimcrt
  • Registratie: Juni 2011
  • Laatst online: 09-09 18:12

nephilimcrt

Mad Scientist

Topicstarter
@Mavamaarten: Ik ben met een projectje bezig. En ik mag dan geen echte coder zijn, maar met hulp van diverse internetbronnen, waaronder alle geweldige GoTters, kom ik een heel eind.

@Ryan_: Dat ziet er bruikbaar uit. Thanks!

Tapping progress on the shoulder and saying: "More forwards, please!".


  • DexterDee
  • Registratie: November 2004
  • Laatst online: 12:57

DexterDee

I doubt, therefore I might be

Een timer is het meest simpele, maar gedurende het downloaden c.q. verwerken van een nieuw plaatje zal je applicatie hangen. Of je moet er overal doEvents() tussen gaan proppen. De beste methode is een BackgroundWorker die de benodigde acties doet en dan via het RunWorkerCompleted event de GUI bijwerkt. Het aftrappen van de BackgroundWorker kun je wél in een timer doen. Op die manier blijft je applicatie tijdens het verwerken ook gewoon reageren op acties van de gebruiker. Het vereist wel wat kennis van multithreaded programmeren en is lastiger dan gewoon een timer gebruiken.

Klik hier om mij een DM te sturen • 3245 WP op ZW


  • nephilimcrt
  • Registratie: Juni 2011
  • Laatst online: 09-09 18:12

nephilimcrt

Mad Scientist

Topicstarter
DexterDee schreef op donderdag 10 november 2011 @ 19:35:
Het vereist wel wat kennis van multithreaded programmeren en is lastiger dan gewoon een timer gebruiken.
Ik heb de hele week al gevochten met multithreaded dingetjes. Ik wil er eigenlijk zover mogelijk uit de buurt blijven. Bah! ;)

Tapping progress on the shoulder and saying: "More forwards, please!".


  • Ryan_
  • Registratie: Februari 2009
  • Laatst online: 13:53
Mavamaarten schreef op donderdag 10 november 2011 @ 19:32:
@Ryan__ Wat is er mis om de timer properties juist te zetten in designer? Dat bespaart code ;)
Uiteraard, al zet ik zelf graag alles het liefst in m'n code :)
nephilimcrt schreef op donderdag 10 november 2011 @ 19:34:
@Ryan_: Dat ziet er bruikbaar uit. Thanks!
Geen probleem en succes 8)

  • Mavamaarten
  • Registratie: September 2009
  • Nu online

Mavamaarten

Omdat het kan!

nephilimcrt schreef op donderdag 10 november 2011 @ 19:34:
@Mavamaarten: Ik ben met een projectje bezig. En ik mag dan geen echte coder zijn, maar met hulp van diverse internetbronnen, waaronder alle geweldige GoTters, kom ik een heel eind.
Zo ben ik ook begonnen :)
Succes met je project !
Ryan_ schreef op donderdag 10 november 2011 @ 19:39:
[...]
Uiteraard, al zet ik zelf graag alles het liefst in m'n code :)
Ieder zijn eigen smaak ;)

Android developer & dürüm-liefhebber


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 12:20

mulder

ik spuug op het trottoir

Bovendien bespaart het geen code, maar staat het op een andere plek, the .designer.vb. En dit zijn nou net properties die je wel in je main wilt zien.

oogjes open, snaveltjes dicht


  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 10-09 21:56
Ryan_ schreef op donderdag 10 november 2011 @ 19:31:
Visual Basic .NET:
1
2
3
4
5
6
7
8
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Enabled = True
        Timer1.Interval = 5000
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        'Hier de inhoud die normaliter in een oneindige loop zit.
    End Sub
Even een kleine (commentaar) aanpassing gedaan zodat het wat duidelijker is. Want een (oneindige) loop in een Timer heft het nut van de timer op natuurlijk :X.

  • nephilimcrt
  • Registratie: Juni 2011
  • Laatst online: 09-09 18:12

nephilimcrt

Mad Scientist

Topicstarter
Ryan_'s voorbeeldje zegt: Handles clause requires a WithEvents variable defined in the containing type or one of its base types. :(

Tapping progress on the shoulder and saying: "More forwards, please!".


Acties:
  • 0 Henk 'm!

  • Ryan_
  • Registratie: Februari 2009
  • Laatst online: 13:53
Heb je wel een timer control toegevoegd aan je designer.vb?

Acties:
  • 0 Henk 'm!

  • jan-marten
  • Registratie: September 2000
  • Laatst online: 09-09 19:38
Hoeft niet perse in de designer, mag ook runtime aangemaakt worden:
code:
1
Private WithEvents Timer1 As System.Timer

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
nephilimcrt schreef op donderdag 10 november 2011 @ 20:51:
Ryan_'s voorbeeldje zegt: Handles clause requires a WithEvents variable defined in the containing type or one of its base types. :(
Doe jezelf, en ons, een lol en begin gewoon eens met een basistutorial VB.Net want dit is écht gewoon les 1 of 2 stof en moet je gewoon prima zelf op kunnen lossen. Sleur-en-pleur een timer op je form et voila.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • nephilimcrt
  • Registratie: Juni 2011
  • Laatst online: 09-09 18:12

nephilimcrt

Mad Scientist

Topicstarter
Ok, ok... Ik had ook niet zomaar ineens 'hij doet et niet' moeten roepen. Ik ben nog een beetje van de oude stempel en denk er niet eens bij na dat je dingen als timers en weet ik wat ook gewoon kunt slepen.

Uiteraard doet ie 't inmiddels, na toch maar even te hebben gesleept. Ik zie niet wat er nu anders is aan m'n code, maar hij doet 't. Dank allen.

Tapping progress on the shoulder and saying: "More forwards, please!".


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
nephilimcrt schreef op zondag 13 november 2011 @ 22:28:
Ik zie niet wat er nu anders is aan m'n code, maar hij doet 't. Dank allen.
En dat is nou precies de reden waarom we hier niet graag voorkauwen; je hebt nu helemaal niets opgestoken. Nogmaals: volg een tutorial/cursus/whatever en doe jezelf daarmee een groot plezier.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1