VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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ファルダ監視 |
>                       :    +--------------+
>            :      :
> <--->:ファイルが作成されるとそのファイル名を取得。
> メインプログラムではそのファイルを読んで処理を行ないます。
>
> 複数起動出来て、各々監視出るようにしたいです。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -