Jeg koder lidt p� min spectrumanalyser. Den sampler lyd fra lydkortet og
tegner et scop og en FFT. For at f� scopet til at opdatere hurtigt og
flydende, sampler jeg en ret lille blok (lad os kalde det en frame) ad
gangen og tegner den som scop. Frames'ene samler jeg sammen i en st�rre
buffer og k�rer en FFT p� den engang imellem.
Denne FFT og grafiktegning (plus scop i samme frame) kan tage l�ngere tid
end tiden mellem de enkelte frames, s� jeg har sat en backgroundworker op
til at beregne og tegne grafik, for ikke at miste frames. Men den crasher
nogle gange (InvalidOperationExeption) fordi de pictureboxe den tegner i er
oprettet i mainformen, og backgroundworkeren er en anden tr�d.
Det ville nok v�re smartere hvis samplingen k�rte i en anden tr�d i stedet
for beregning og tegning. Men s� skal backgroundworkeren have prioritet over
main, ellers mister jeg jo alligevel frames. Samplingen bliver trigget af et
'dataarrived' event hver gang en frame er klar, og kopierer bare en buffer,
s� den tager ikke lang tid.
Kan man p� en nem m�de �ndre prioriteten af en backgroundworker, eller skal
man over i noget 'rigtig' flertr�dsteknik? Kan se framework 4 har nogle
ekstra ting at tilbyde p� det punkt.
--
Ulrik Smed
Aarhus