Bonjour

Je fais l'acquisition d'un signal AC en continu avec une carte pci et j'affiche le signal sur un oscilloscope virtuel.
Pour ça j'utilise un backgroundworker. Le problème est que ça me pompe 100% des ressources CPU.
Est-ce un problème dans ma maniere d'utiliser la BGW ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
PrivateSub BackgroundWorker9_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker9.DoWork

Dim worker9 As System.ComponentModel.BackgroundWorker = CType(sender, System.ComponentModel.BackgroundWorker)
AddHandler BackgroundWorker9.DoWork, AddressOf oscillo1
EndSub

PrivateSub backgroundWorker9_RunWorkerCompleted(ByVal sender AsObject, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker9.RunWorkerCompleted
Try
U1.PlotY(Waveforms) 'Affiche la courbe sur l'oscillo
my_niScope.Abort()
Catch ex As Exception
EndTry
EndSub

PrivateSub oscillo1(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs)

Dim numOfSamples AsInteger
Dim Waveform_Info() As niScopeWfmInfo

my_niScope.ActualRecordLength(numOfSamples) 'get record length
ReDim Waveforms(numOfSamples - 1) 'initialize result arrays Waveforms and WfmInfo
ReDim Waveform_Info(numOfSamples - 1)
my_niScope.Read("0", 1, 10000, Waveforms, Waveform_Info) 'Realise la lecture du signal
'End If
EndSub
 

Et l'appel
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
PrivateSub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
BackgroundWorker9.RunWorkerAsync()
end sub
 
se fait dans un timer
Je précise que les softs pour tester la carte font la meme chose sans
pomper toutes les ressources.

Ou bien c'est ma fonction qui veut ça et je peux rien n'y faire ?

Merci