質問編集履歴

3

一部修正

2016/08/14 13:12

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -94,8 +94,6 @@
94
94
 
95
95
  Public Class frmMain
96
96
 
97
- private lst As List(Of bean) = Nothing
98
-
99
97
  Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
100
98
 
101
99
  BackgroundWorker1.WorkerSupportsCancellation = True
@@ -114,6 +112,8 @@
114
112
 
115
113
  Handles BackgroundWorker1.DoWork
116
114
 
115
+ Dim lst As List(Of bean)
116
+
117
117
  While True
118
118
 
119
119
  If BackgroundWorker1.CancellationPending Then
@@ -122,13 +122,11 @@
122
122
 
123
123
  End If
124
124
 
125
- lst = New List(Of bean)
126
-
127
125
  Dim CLSMain As clsMain = New clsMain
128
126
 
129
- lst = CLSListMain.prepare()
127
+ lst = CLSMain.prepare()
130
128
 
131
- CLSListMain.check(lst)
129
+ CLSMain.check(lst)
132
130
 
133
131
  BackgroundWorker1.ReportProgress(0, lst)
134
132
 
@@ -162,7 +160,7 @@
162
160
 
163
161
  If e.Cancelled = True Then
164
162
 
165
- BackgroundWorker1.CancelAsync()
163
+ 'BackgroundWorker1.CancelAsync()
166
164
 
167
165
  Else
168
166
 

2

編集

2016/08/14 13:12

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -134,11 +134,7 @@
134
134
 
135
135
  Threading.Thread.Sleep(60000)
136
136
 
137
- End While
137
+ End While
138
-
139
-
140
-
141
-
142
138
 
143
139
  e.Result = lst
144
140
 
@@ -154,17 +150,35 @@
154
150
 
155
151
  Dim lst As List(Of bean) = DirectCast(e.UserState, List(Of bean))
156
152
 
153
+ End Sub
154
+
155
+ Private Sub BackgroundWorker1_RunWorkerCompleted(
156
+
157
+ ByVal sender As System.Object,
158
+
159
+ ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) _
160
+
161
+ Handles BackgroundWorker1.RunWorkerCompleted
162
+
163
+ If e.Cancelled = True Then
164
+
165
+ BackgroundWorker1.CancelAsync()
166
+
167
+ Else
168
+
169
+ Dim lst As List(Of bean) = DirectCast(e.Result, List(Of bean))
170
+
157
171
  For Each r As bean In lst
158
172
 
159
- Dim rResult As Control() = Controls.Find("txtBox" & r.No, True)
173
+ Dim rResult As Control() = Controls.Find("txtBox" & r.No, True)
160
174
 
161
175
  CType(rResult(0), TextBox).Text = r.Result
162
176
 
163
177
  Next
164
178
 
179
+ End If
180
+
165
181
  End Sub
166
-
167
-
168
182
 
169
183
  Private Sub btnStop_Click(sender As Object, e As EventArgs) Handles btnStop.Click
170
184
 

1

編集

2016/08/14 04:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -98,6 +98,8 @@
98
98
 
99
99
  Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
100
100
 
101
+ BackgroundWorker1.WorkerSupportsCancellation = True
102
+
101
103
  BackgroundWorker1.WorkerReportsProgress = True
102
104
 
103
105
  BackgroundWorker1.RunWorkerAsync()
@@ -134,6 +136,12 @@
134
136
 
135
137
  End While
136
138
 
139
+
140
+
141
+
142
+
143
+ e.Result = lst
144
+
137
145
  End Sub
138
146
 
139
147
  Private Sub BackgroundWorker1_ProgressChanged(
@@ -143,6 +151,8 @@
143
151
  ByVal e As ProgressChangedEventArgs) _
144
152
 
145
153
  Handles BackgroundWorker1.ProgressChanged
154
+
155
+ Dim lst As List(Of bean) = DirectCast(e.UserState, List(Of bean))
146
156
 
147
157
  For Each r As bean In lst
148
158
 
@@ -154,6 +164,16 @@
154
164
 
155
165
  End Sub
156
166
 
167
+
168
+
169
+ Private Sub btnStop_Click(sender As Object, e As EventArgs) Handles btnStop.Click
170
+
171
+ 'ストップボタンでBackgroundWorkerを停止させたい
172
+
173
+ BackgroundWorker1.CancelAsync()
174
+
175
+ End Sub
176
+
157
177
  End Class
158
178
 
159
179
  ```