checker2000です。初めて質問します。
現在VB6でアプリを作っています。
内容は、
フォームにリストビューと終了ボタンがそれぞれ1づつあります。
このアプリを起動すると、ある決められたフォルダの中身を監視し、
変更(ファイルが作られたなど)されたら、リストビューに
変更された時刻を追加していく。また、終了ボタンが押されたときは
アプリを閉じる。というアプリです。
この処理をAPIを使ってやってみてうまくいったのですが、
ずっと監視している為、終了ボタンが押せないのです。
使用しているAPIは、
FindFirstChangeNotification、
WaitForSingleObject
FindNextChangeNotification、
FindCloseChangeNotification、
です。
1.FileChangeNotificationからハンドルをもらう。
2.WaitForSingleObjectにハンドルと-1(ずっと監視)を渡し、
変更されるまで待つ。
3.フォルダの中身が変更されたらリストビューに時刻を追加する。
4.FindNextChangeNotificationを呼ぶ。
5.2へ戻る。
6.FindCloseChangeNotificationで処理を終了する。
この監視する処理を別スレッド等でさせるには
どうすればよいのでしょうか?
別スレッド等?
等って?
VB6はマルチスレッドに対応していなかったはず。
VB.NETならできるでしょう。
WaitForSingleObjectではなく、MsgWaitForMultipleObjectsと
DoEventsとDo...Loopを組み合わせて使ってください。
# 別スレッドにするまでもない問題のような。
ツイート | ![]() |