質問編集履歴

2

ウィンドウメッセージ処理の追記

2018/05/16 02:43

投稿

garakutayama
garakutayama

スコア7

test CHANGED
File without changes
test CHANGED
@@ -190,10 +190,6 @@
190
190
 
191
191
 
192
192
 
193
-
194
-
195
-
196
-
197
193
  スタートアップフォームに作成したtmr_OneSecのTickイベントにて呼んでいます。
198
194
 
199
195
 
@@ -233,3 +229,65 @@
233
229
 
234
230
 
235
231
  ```
232
+
233
+
234
+
235
+ ### 追記② ウィンドウメッセージの処理
236
+
237
+
238
+
239
+ 大変申し訳ありません。
240
+
241
+ 改めて見直したところ対象フォームのウィンドウメッセージをオーバーライドしていることが分かりました。
242
+
243
+ (デバイスの利用の為に作成したが消し忘れていたようです)
244
+
245
+
246
+
247
+ この関数をコメントアウトしたところ少し見た限りではモジュール①の状態でもリークしないようになりました。
248
+
249
+ しばらく様子を見たいと思います。
250
+
251
+
252
+
253
+ 画面更新等の処理はないとの間違った情報を提示してしまい申し訳ありませんでした。
254
+
255
+
256
+
257
+
258
+
259
+ また新たな疑問として下記の処理でリークする理由(なぜLabelのtextchangeでリークするのか)についても、詳しく調べていきたいと思います。
260
+
261
+
262
+
263
+ ```VB.NET
264
+
265
+ Protected Overrides Sub WndProc(ByRef m As Message)
266
+
267
+ SPREAD.SuspendLayout()'別のスプレッドシートの描画停止処理
268
+
269
+ Try
270
+
271
+ Select Case m.Msg
272
+
273
+ ''Case WINDOW_MESSAGE._DIOEVENT
274
+
275
+ ''SignalInput(Integer.Parse(m.WParam.ToString)) '監視対象の機器&立ち上がり信号の場合、信号受信処理実行
276
+
277
+ Case Else
278
+
279
+ MyBase.WndProc(m) '<フォームの標準処理の実行>
280
+
281
+ End Select
282
+
283
+ Catch ex As Exception
284
+
285
+ SaveErrorLog(MethodBase.GetCurrentMethod.Name, ex, "m:" & m.Msg)
286
+
287
+ End Try
288
+
289
+ SPREAD.ResumeLayout()
290
+
291
+ End Sub
292
+
293
+ ```

1

早速の返信ありがとうございます。EverySecProcessの呼出元を質問文に追記しました。

2018/05/16 02:43

投稿

garakutayama
garakutayama

スコア7

test CHANGED
File without changes
test CHANGED
@@ -177,3 +177,59 @@
177
177
  言語: VB.NET
178
178
 
179
179
  対象のフレームワーク: .Net Flamework 4.5
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+ ### 追記① EverySecProcessの呼出元について
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+ スタートアップフォームに作成したtmr_OneSecのTickイベントにて呼んでいます。
198
+
199
+
200
+
201
+ ```VB.NET
202
+
203
+
204
+
205
+ Private Sub tmr_OneSec_Tick(sender As Object, e As EventArgs) Handles tmr_OneSec.Tick
206
+
207
+ If MyStatus.IsInitialization Then '初期設定中はタイマー処理は実施しない
208
+
209
+ Exit Sub
210
+
211
+ End If
212
+
213
+
214
+
215
+ EverySecProcess() '毎秒処理の実行
216
+
217
+
218
+
219
+ If OneMinuteCount >= 59 Then '毎分処理の実行
220
+
221
+ OneMinuteCount = 0
222
+
223
+ EveryMinProcess()
224
+
225
+ Else
226
+
227
+ OneMinuteCount += 1
228
+
229
+ End If
230
+
231
+ End Sub
232
+
233
+
234
+
235
+ ```