Gå til innhold

Sende data til backgroundworker som allerede kjører?


Anbefalte innlegg

Private Sub DV_OnVolumeNotification(ByVal data As CoreAudioApi.AudioVolumeNotificationData) Handles AEV.OnVolumeNotification

If Not BGW.IsBusy Then BGW.RunWorkerAsync(data)

End Sub

 

En enkel kode som starter en backgroundworker... Problemet er at jeg vil sende data til backgroundworkeren sin thread hver gang OnVolumeNotification eventen fyres. :p

 

Er dette på noen måte mulig?

Endret av Wubbable
Lenke til kommentar
Videoannonse
Annonse

Det kommer litt an på arbeidsmengden - forventer du at bakgrunnstråden tilbringer svært liten tid på hver oppgave, er det nok mest optimalt å bruke et delt Queue-objekt, samt hente ut en synkronisert wrapper via Synchronized-metoden for trådsikkerhet (ArrayList og SyncLock i pre-2.0). La så hovedtråden starte bakgrunnstråden om køen er tom og for hver hendelseskjøring legge ut data. Bakgrunnstråden kan så simpelthen hente ut data, utføre prosesseringen, og dernest avslutte når køen er tom.

 

Eventuelt, om arbeidsoppgavene er langvarige og egner seg til parallellkjøring, kan en godt bruke en ThreadPool.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...