私は同期タスクを実行する関数を持っていますが、私は同じですが非同期タスクを使用します。Visual Basic非同期タスク代わりに同期タスク
どうすればよいですか?
これはコードです:
パブリック・クラスのForm1 タスク
としてプライベートtaskOUTプライベートサブButton_Start_Click(オブジェクト、EventArgsのようEと、送信者が)Button_Start.Click
Dim freq As Double = TextBox1.Text
Dim Amp As Double = TextBox2.Text
Dim SPB As Double = TextBox3.Text
Dim CPB As Double = TextBox4.Text
'---------------------------------------
Dim SCRate As Double = (freq * SPB)/CPB
'---------------------------------------
taskOUT = New Task() 'Crea un task
taskOUT.AOChannels.CreateVoltageChannel("Dev1/ao0", "", -10, 10, AOVoltageUnits.Volts) 'Aggiunge un canale in Out
taskOUT.Timing.SampleClockRate = SCRate
taskOUT.Timing.ConfigureSampleClock("", SCRate, SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, 1000)
'-----------------------------
Dim ydata As Double()
ydata = GenSin(freq, Amp, SCRate, SPB)
'-------------------------------------------
Dim writer As New AnalogSingleChannelWriter(taskOUT.Stream)
writer.WriteMultiSample(False, ydata)
taskOUT.Start()
End Sub
'-----------------------------------------------------------------------
Public Shared Function GenSin(_
ByVal freq As Double, _
ByVal amp As Double, _
ByVal sampleClockRate As Double, _
ByVal samplePerBuffer As Double) As Double()
Dim dt As Double
Dim IntSample As Integer
dt = 1/sampleClockRate
IntSample = CInt(SamplePerBuffer) - 1
Dim y(IntSample - 1) As Double
For i As Integer = 0 To IntSample - 1
y(i) = amp * Math.Sin((2.0 * Math.PI) * freq * (i * dt))
Next
Return y
End Function
Private Sub Button_Stop_Click(sender As Object, e As EventArgs) Handles Button_Stop.Click
taskOUT.Stop()
taskOUT.Dispose()
End Sub
エンドクラスを処理します
コードを画像としてではなく、ポストしてください。それは本当に読みにくいですし、SOには構文を強調表示する機能があります... –
ありがとう、私は訂正しました。 –