バクグラウンド処理させているものをtimerで一定の時間間隔で繰り返させようとしています。
Timer1_Tick内で書いた処理と、btnStart_Clickで書いた処理が同じ内容なのですが、そうすると、停止ボタン(btnStop_Click)を押しても停止できなくなってしまいました。
どうすれば停止処理を正常に機能できるようになるでしょうか。
よろしくお願いいたします。
Public Class frmMain Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Timer1.Enabled = True Me.Timer1.Interval = 1000 * 60 * 0.5 End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick BackgroundWorker1.WorkerSupportsCancellation = True BackgroundWorker1.WorkerReportsProgress = True BackgroundWorker1.RunWorkerAsync() End Sub Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click BackgroundWorker1.WorkerSupportsCancellation = True BackgroundWorker1.WorkerReportsProgress = True BackgroundWorker1.RunWorkerAsync() End Sub Private Sub backgroundworker1_DoWork( ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) _ Handles BackgroundWorker1.DoWork '処理 e.Result = lst End Sub Private Sub BackgroundWorker1_ProgressChanged( ByVal sender As Object, ByVal e As ProgressChangedEventArgs) _ Handles BackgroundWorker1.ProgressChanged '処理 End Sub Private Sub BackgroundWorker1_RunWorkerCompleted( ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) _ Handles BackgroundWorker1.RunWorkerCompleted If e.Cancelled = True Then Else '処理 End If End Sub Private Sub btnStop_Click(sender As Object, e As EventArgs) Handles btnStop.Click BackgroundWorker1.CancelAsync() End Sub End Class
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/08/16 14:30