Toon posts:

[VB] hoe zorg ik dat de timer door blijft lopen?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi
code:
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub TopHour_Timer()
    TimeRR = Split(Time, ":")
    TimeRR = TimeRR(1) & TimeRR(2)
    TimeRR = Split(TimeRR, " ")
    TimeRR = TimeRR(0)
    Label2.Caption = TimeRR
    
    If TimeRR = "0000" Then
      FadeOut
      StartCommercials
    End If
End Sub

Deze code zorgt ervoor dat op het hele uur (0 minuten en 0 seconden) startCommercials aangeroepen wordt. Daarin zitten loopjes met mediaplayer dingen. In startCommercials wordt dan weer startPlaylist aangeroepen, en zo zit alles in elkaar genest. Als het dus 0000 wordt en de commercials beginnen, dan stopt de timer. 1 uur later gebeurt er dus helemaal niets meer. Is het ook mogelijk om FadeOut en StartCommercials 'extern' aan te roepen? Dus dat het buiten de timer uitgevoerd wordt?

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 13-09 23:09

Skinny

DIRECT!

Het kan aan mij liggen, maar kan je niet gewoon aan het einde van het subje..
code:
1
Timer.Enabled = True

zetten ? dan moet ie toch door blijven lopen.

SIZE does matter.
"You're go at throttle up!"


Verwijderd

Topicstarter
Nee dat had ik al geprobeerd, werkt helaas niet, want hij voert heel startCommercials uit voordat 'ie verder gaat. En aangezien in startCommercials weer startPlaylist aangeroepen wordt met een loop met MP3's die langer dan een uur duurt...

En in StartCommercials die timer enablen werkte ook nite

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 13-09 23:09

Skinny

DIRECT!

- Met welke procedure / code voer je die mediaplayer e.d. uit ?
- Waarom moet ie na een uur weer starten als loop 1 nog bezig is ?

[uit het hoofd, niet gechecked]
Kijk in de HELP / MSDN even naar 'DoEvents'.. Volgens mij zorgt die o.a. ervoor dat de events netjes afgehandeld worden als je prog ergens druk mee bezig is.
vb:
code:
1
2
3
4
Do
  DoEvents
  -- Doe iets gruwelijk moeilijks
Loop

SIZE does matter.
"You're go at throttle up!"


Verwijderd

Topicstarter
Oke, ga ik naar kijken, thanks! :)

Hij moet op het hele uur afbreken omdat ik playlists van 1 uur maak en op het hele uur moeten er een paar jingles komen (die komen uit StartCommercials) en daarna weer een andere playlist geladen worden.

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 13-09 23:09

Skinny

DIRECT!

Kan je anders de 'schedule' funktie niet door een ander progje laten uitvoeren (De timer in VB is daar niet echt geschikt voor denk ik.. voor langere perioden)

Windows Taakplanner bijvoorbeeld.
Elk uur laat je hem dan een progje uitvoeren dat StartCommercials doet en daarna je nieuwe playlist voor het uur laadt.

Lijkt me simpeler.

SIZE does matter.
"You're go at throttle up!"


Verwijderd

Topicstarter
Ik heb liever alles in 1 app, en ik weet dat het kan..

Dancenet FM (internetradio station) heeft dat ook.. software is gemaakt door DJ Enrico trouwens :).

Verwijderd

't kan prima idd, kwestie van 'n losse thread starten, maar dat is onmogelijk in VB.

Verwijderd

Op vrijdag 28 december 2001 16:25 schreef Yarvieh het volgende:
't kan prima idd, kwestie van 'n losse thread starten, maar dat is onmogelijk in VB.
Niet onmogelijk, wel moeilijk. Zoeken op I'net naar componenten voor VB welke dit voor je doen (zoek bijv. op multi-threading for VB6).
Suc6

Verwijderd

[quoteNiet onmogelijk, wel moeilijk. Zoeken op I'net naar componenten voor VB welke dit voor je doen (zoek bijv. op multi-threading for VB6).
Suc6
[/quote]
Hier staat een _PRACHTIG_ voorbeeldje, met source van multi threading. Echt een supermooie class die multi-threading super makkelijk maakt :) :9
Er staat zelfs een uitgebreide tutorial bij hoe alles werkt!

Ik heb het zelf nog niet uitgeprobeerd, maar ga dat zeker doen!

Verwijderd

Topicstarter
Ik heb met multithreading gespeelt, maar helaas is dat onbruikbaar, want hij crashed meteen. Zowel bij een eigen test als bij het voorbeeld ;(

Verwijderd

Op zaterdag 29 december 2001 17:27 schreef [nielsonline] het volgende:
Ik heb met multithreading gespeelt, maar helaas is dat onbruikbaar, want hij crashed meteen. Zowel bij een eigen test als bij het voorbeeld ;(
Vreemd, ik heb het voorbeeld gedraaid zonder enig probleem? Heb je een exotische systeem ofzo? Welk win versie? (ik draai XP).
Het is des te vreemder omdat de classe in principe alleen een simepele wrapper om een aantal API-functies is...
Zoek anders ff op www.pscode.com naar threading. Zie ook m'n sig :)

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 16:17

johnwoo

3S-GTE

Op vrijdag 28 december 2001 16:25 schreef Yarvieh het volgende:
't kan prima idd, kwestie van 'n losse thread starten, maar dat is onmogelijk in VB.
VB zelf biedt idd geen taalconstructie om dit te doen, maar met de CreateThread API kom je een heel eind :)

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

Topicstarter
Op zaterdag 29 december 2001 19:43 schreef KoenM het volgende:

[..]

Vreemd, ik heb het voorbeeld gedraaid zonder enig probleem? Heb je een exotische systeem ofzo? Welk win versie? (ik draai XP).
Het is des te vreemder omdat de classe in principe alleen een simepele wrapper om een aantal API-functies is...
Zoek anders ff op www.pscode.com naar threading. Zie ook m'n sig :)
Da's vaag!

Ik draai ook XP (jah echt.. :{ :D).. zou je je .exe 's willen posten/mailen? ff proberen wat 'r hier gebeurt dan..

Verwijderd

Vreemd, bij mij crasht die demo nu ook bij het afsluiten van de demo... dan kapt VB er ook mee... :( Ik vrees dus dat je wat anders moet proberen...
Wat mischien zou kunnen (maar heel dirty is...) dat je in de timer een apart form (let's say frmActie) aanroept, maar niet modal. Dat gaat dacht ik asynchroon, dus je code huppelt vrolijk door, en komt volgend uur weer in de timer...
Dus gewoon 'frmActie.Show' in frmActie.Activate gooi je dan 'FadeOut' en 'StartCommercials' die worden dan uitgevoerd terwijl de timer doortikt...

Weet niet of het werkt, maar mischien wel...
zoek anders ff naar een gratis multi-threading componentje... mischien op www.vbaccelerator.com -> http://www.vbaccelerator.com/codelib/thread/exethr.htm
maar dit heb ik nog nooit getest...

Suc6 in ieder geval :)

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15-09 22:39
Op zaterdag 29 december 2001 23:31 schreef johnwoo het volgende:
VB zelf biedt idd geen taalconstructie om dit te doen, maar met de CreateThread API kom je een heel eind :)
Aaargh... dat is toch wel een drastische maatregel om iets te maken in VB waar het niet voor bedoeld is.

Mijn menig is dat als je wat wilt proggen waarbij je niet om meerdere threads heen kunt, maak het dan niet in VB.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

uhh als je een timer enabled blijft deez je heleprogramma doorlopen :P

Verwijderd

Topicstarter
Op maandag 31 december 2001 02:39 schreef -=[Terrorvis]=- het volgende:
uhh als je een timer enabled blijft deez je heleprogramma doorlopen :P
Nee niet zoals ik het doe.

Ik heb StartCommercials IN die timer staan, het hoort dan dus bij die timer en die gaat niet door voor startcommercials afgelopen is. Maja, daarin zit ook StartPlaylist enzo dus daar komt gewoon geen eind aan.

Is C++ een betere taal ervoor? Daar ga ook mee expirimenteren :)

Verwijderd

Kan je hem dan niet zo maken als:
code:
1
2
3
  FadeOut
  StartCommercials
  FadeIn

Met andere woorden: De StartCommercials gewoon laten afmaken en dan weer verder gaan?

Verder lijkt hem me erg foutgevoelig om precies op HH:00:00 een aktie te laten uitvoeren. Beter lijkt het me om te kijken naar of de HH veranderd:
code:
1
2
3
4
5
6
  If Hour(Now()) <> iLastHour Then
    FadeOut
    StartCommercials
    FadeIn
    iLastHour = Hour(Now()))
  End If

Just my EUR 0.02 :)

Verwijderd

Topicstarter
Op maandag 31 december 2001 10:38 schreef Debbus het volgende:
Kan je hem dan niet zo maken als:
code:
1
2
3
  FadeOut
  StartCommercials
  FadeIn

Met andere woorden: De StartCommercials gewoon laten afmaken en dan weer verder gaan?

Verder lijkt hem me erg foutgevoelig om precies op HH:00:00 een aktie te laten uitvoeren. Beter lijkt het me om te kijken naar of de HH veranderd:
code:
1
2
3
4
5
6
  If Hour(Now()) <> iLastHour Then
    FadeOut
    StartCommercials
    FadeIn
    iLastHour = Hour(Now()))
  End If

Just my EUR 0.02 :)
Ja dat maakt niet uit, zit je nog met het feit dat 'ie gewoon kapt als 'ie een actie uitvoert..

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15-09 22:39
Op maandag 31 december 2001 09:31 schreef [nielsonline] het volgende:

[..]

Nee niet zoals ik het doe.

Ik heb StartCommercials IN die timer staan, het hoort dan dus bij die timer en die gaat niet door voor startcommercials afgelopen is. Maja, daarin zit ook StartPlaylist enzo dus daar komt gewoon geen eind aan.

Is C++ een betere taal ervoor? Daar ga ook mee expirimenteren :)
Met C++ kun je dit probleem oplossen door het starten van die commercial (het aanroepen van de startCommercials functie) in een andere thread te zetten. Het is echter wel een hele bult xtra werk.

Het probleem zit 'em dus eigenlijk in de manier waarop die mediaplayer werkt. Deze functie blocked totdat het hele filmpje is afgelopen. Wat je eigenlijk wil is een functie die het filmpje start, en een event genereert wanneer het is afgelopen. ( met een of ander Flashcomponentje gaat dat wel op die manier weet ik toevallig)

Heeft mediaplayer niet een mogelijkheid om het op diezelfde manier te doen?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Tim
  • Registratie: Mei 2000
  • Laatst online: 23-07 15:18

Tim

Is het niet gewoon makkelijker om een playlist met om het uur jingles te maken? :)
Pagina: 1