投稿日 | : 2003/05/08(Thu) 15:05 |
投稿者 | : 通りすがり |
Eメール | : |
URL | : |
タイトル | : Re: 同じ処理を複数起動する方法 |
VBで並列処理を行いたいということですよね?
スレッドを起動すれば出来るのではないでしょうか。
ただ、VBのバージョンによってはスレッドを起こすことは
出来ません。
> こんにちは、皆さん。
>
> 単純な質問かも知れませが、同じ処理を複数起動する方法について教えて下さい。
>
> 処理は"あるフォルダ"のファイルを監視するプログラムです。
> (FindFirstChangeNotificationを使って監視しようかと思っています。)
>
> "あるフォルダ"と言うのは実行環境に依って複数あります。(数は決められません)
>
> 現状、メインプログラムから監視プログラムを起動すると、ファイルの監視中はメインプログラム
> も止まってしまいます。
> これを、何とか止まらずに"あるフォルダ"分監視し続ける良い方法はないでしょうか?
>
> メインプログラム終了時は全ての監視処理を終了します。
>
> *----監視プログラム-------------------------------------------------------------------
> Private Sub Surveillance(ImgFolder As String)
> 'ImgFolderは呼び元から受け渡されるフォルダ名x:\xxxx\xxx
>
> Dim NotificationHandele
> Dim bWaiting As Boolean
> Dim ErrCode
> Dim lngResult
>
> Dim lngSTARTTick As Long
>
> Dim strDcmFile As String
> Const WAIT_OBJECT_0 As Long = 0
>
> Dim ImgFolder As String
> 'ImgFolder = "c:\&&Temp\#1" '監視フォルダ()
>
> Set objFS = CreateObject("Scripting.FileSystemObject")
> '*** ファイル変更通知object のスタート
> NotificationHandele = FindFirstChangeNotification _
> (pImgFolder, False, FILE_NOTIFY_CHANGE_FILE_NAME)
>
> If NotificationHandele = INVALID_HANDLE_VALUE Then '関数エラーの場合
> ErrCode = GetLastError
> Call EndRTN(ErrCode) '*** 終了処理の実行
> End If
>
> bWaiting = True
> Do While bWaiting = True
> lngResult = WaitForSingleObject(NotificationHandele, INFINITE)
>
> If (lngResult = WAIT_OBJECT_0) Then 'ファイル作成を感知した場合
> strDcmFile = Dir$(pImgFolder & "\*.*") 'ファイル名の取得
> Call FileRegist '****** 登録処理を実行
> FindNextChangeNotification _
> (pImgFolder & NotificationHandele) 'ファイル変更通知object のリスタート
> End If
> Loop
> '*** 通知オブジェクトをクローズ
> FindCloseChangeNotification (NotificationHandele)
>
> End Sub
> *----監視プログラム-------------------------------------------------------------------
> 【理想】
> +--------------+ +--------------+
> | メイン |<-----+---->|Aファルダ監視 |
> +--------------+ | +--------------+
> | +--------------+
> +<--->|Bファルダ監視 |
> | +--------------+
> | +--------------+
> +<--->|Cファルダ監視 |
> : +--------------+
> : :
> <--->:ファイルが作成されるとそのファイル名を取得。
> メインプログラムではそのファイルを読んで処理を行ないます。
>
> 複数起動出来て、各々監視出るようにしたいです。