質問編集履歴

1

tuiki

2018/12/05 02:23

投稿

xxx8
xxx8

スコア41

test CHANGED
File without changes
test CHANGED
@@ -34,4 +34,192 @@
34
34
 
35
35
 
36
36
 
37
- VisualStudio2010
37
+ ViualStudio2010
38
+
39
+
40
+
41
+
42
+
43
+ ### 追記
44
+
45
+
46
+
47
+ 外出のため編集できませんでした。
48
+
49
+ 以下に大まかな処理のコードを記載致します。
50
+
51
+
52
+
53
+ SubBackgroundWorkerProgressChangedのSelect~Caseの「-1」では
54
+
55
+ スレッドの一時停止処理を、Select~Caseの「-2」~「-4」では
56
+
57
+ 参照しているDLLを実行させています。
58
+
59
+ DLL内では主に、DBを検索しデータの取得・更新を行っています。
60
+
61
+
62
+
63
+ ```ここに言語を入力
64
+
65
+
66
+
67
+ Public oEvWork As New System.Threading.ManualResetEvent(True)
68
+
69
+ Friend WithEvents BackgroundWorker As New System.ComponentModel.BackgroundWorker
70
+
71
+ 'バックグラウンドワーカー一時停止フラグ(True:停止可/False:停止不可)
72
+
73
+ Private mbWakerStopFlg As Boolean = False
74
+
75
+
76
+
77
+   ''' <summary>
78
+
79
+ ''' 一時停止
80
+
81
+ ''' </summary>
82
+
83
+ ''' <param name="sender"></param>
84
+
85
+ ''' <param name="e"></param>
86
+
87
+ ''' <remarks></remarks>
88
+
89
+ Private Sub SubPause_Click(sender As System.Object, e As System.EventArgs) Handles Pause.Click
90
+
91
+ mbStopFlg = True
92
+
93
+ End Sub
94
+
95
+
96
+
97
+   ''' <summary>
98
+
99
+ ''' 再開
100
+
101
+ ''' </summary>
102
+
103
+ ''' <param name="sender"></param>
104
+
105
+ ''' <param name="e"></param>
106
+
107
+ ''' <remarks></remarks>
108
+
109
+ Private Sub SubReStart_Click(sender As System.Object, e As System.EventArgs) Handles ReStart.Click
110
+
111
+ mbStopFlg = False
112
+
113
+ oEvWork.Set()
114
+
115
+ End Sub
116
+
117
+
118
+
119
+   ''' <summary>
120
+
121
+ ''' バックグラウンドワーカー
122
+
123
+ ''' </summary>
124
+
125
+ ''' <param name="sender"></param>
126
+
127
+ ''' <param name="e"></param>
128
+
129
+ ''' <remarks></remarks>
130
+
131
+ Private Sub SubBackgroundWorkerDoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker.DoWork
132
+
133
+ 'カウンター
134
+
135
+ Dim iCnt As Integer
136
+
137
+
138
+
139
+ For i = 1 To iCnt
140
+
141
+
142
+
143
+       If mbStopFlg = True Then
144
+
145
+ Me.BackgroundWorker.ReportProgress(i, -1)
146
+
147
+ End If
148
+
149
+
150
+
151
+ Me.BackgroundWorker.ReportProgress(i, -2)
152
+
153
+
154
+
155
+ Me.BackgroundWorker.ReportProgress(i, -3)
156
+
157
+
158
+
159
+       'バックグラウンドワーカーがResetされているとSetされるまで無限に待機する
160
+
161
+ oEvWork.WaitOne(System.Threading.Timeout.Infinite)
162
+
163
+
164
+
165
+ Me.BackgroundWorker.ReportProgress(i, -4)
166
+
167
+ Next
168
+
169
+ End Sub
170
+
171
+
172
+
173
+   ''' <summary>
174
+
175
+ ''' バックグラウンドワーカーから処理を実行
176
+
177
+ ''' </summary>
178
+
179
+ ''' <param name="sender"></param>
180
+
181
+ ''' <param name="e"></param>
182
+
183
+ ''' <remarks></remarks>
184
+
185
+ Private Sub SubBackgroundWorkerProgressChanged(sender As System.Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker.ProgressChanged
186
+
187
+ 'カウンター
188
+
189
+ Dim iCnt As Integer
190
+
191
+
192
+
193
+ '引数をカウントに変換
194
+
195
+ iCnt = CType(e.UserState, Integer)
196
+
197
+
198
+
199
+ '実行処理分岐
200
+
201
+ Select Case iCnt
202
+
203
+ Case -1
204
+
205
+         oEvWork.Reset()
206
+
207
+
208
+
209
+ Case -2
210
+
211
+
212
+
213
+ Case -3
214
+
215
+
216
+
217
+ Case -4
218
+
219
+
220
+
221
+ End Select
222
+
223
+ End Sub
224
+
225
+ ```