C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

FileSystemWatcherのNotifyFilter

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■97723 / inTopicNo.1)  FileSystemWatcherのNotifyFilter
  
□投稿者/ PATIO (1回)-(2021/07/06(Tue) 14:14:05)

分類:[VB.NET/VB2005 以降] 

ずいぶんお久しぶりの書込みです。

しばらくプログラミングから離れていたんですが、
必要に迫られてVB.netでプログラミングをしてみています。

ファイルの挙動をトリガに動作するプログラムを作成する為に
FileSystemWatcherを色々試してみているのですが、
FileSystemWatcherのNotifyFilterの設定がChanged以外のイベントにも
影響を及ぼしているようなのですが、この辺の関係についての資料ってある物なのでしょうか。
軽く検索したくらいでは出てこないので資料化されていないのではと考えています。

私が引っかかったのは、FilterにFileNameが入っていないとDeletedが発生しないというのがありました。
FilterにSizeだけ設定して確認していたんですが、この状態ではDeletedは発生しませんでした。

この組み合わせについて資料があれば助かるのですが、どなたかご存じありませんか。

引用返信 編集キー/
■97728 / inTopicNo.2)  Re[1]: FileSystemWatcherのNotifyFilter
□投稿者/ Azulean (1195回)-(2021/07/06(Tue) 22:04:11)
No97723 (PATIO さん) に返信
> FileSystemWatcherのNotifyFilterの設定がChanged以外のイベントにも
> 影響を及ぼしているようなのですが、この辺の関係についての資料ってある物なのでしょうか。
逆に疑問なのですが、Changed だけだと思ってしまう流れは何かありますか?
ドキュメント構成上、特定のイベントにだけ影響するような記載はないはずです。

> 私が引っかかったのは、FilterにFileNameが入っていないとDeletedが発生しないというのがありました。
Filter というプロパティもあるのですから、変に略さないでください。誤解を招くので…。

NotifyFilter プロパティの話だとして、そういった対応表はないと思います。
列挙値の一覧を見て、抜いたら機能しなさそうだなぁ…で想像するところでしょうか。

どうしてもといわれるのであれば、FileSystemWatcher のソースコードを見るところでしょうか。
https://referencesource.microsoft.com/#System/services/io/system/io/FileSystemWatcher.cs,729

そこから呼ばれている ReadDirectoryChangesW のパラメーター説明を読めば、一応、ここではファイル削除の例は示されています。
"Any file name change in the watched directory or subtree causes a change notification wait operation to return. Changes include renaming, creating, or deleting a file."
https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-readdirectorychangesw
引用返信 編集キー/
■97800 / inTopicNo.3)  Re[2]: FileSystemWatcherのNotifyFilter
□投稿者/ PATIO (4回)-(2021/07/14(Wed) 15:06:33)
No97728 (Azulean さん) に返信
> ■No97723 (PATIO さん) に返信
>>FileSystemWatcherのNotifyFilterの設定がChanged以外のイベントにも
>>影響を及ぼしているようなのですが、この辺の関係についての資料ってある物なのでしょうか。
> 逆に疑問なのですが、Changed だけだと思ってしまう流れは何かありますか?
> ドキュメント構成上、特定のイベントにだけ影響するような記載はないはずです。

確かに記述はないですね。
Changedの場合は変化対象が複数あるからフィルターがあって
そのほかに関してはファイル自体の話なので関係なさそうな気がしていただけなので
まあ、言われてみればという話です。

>>私が引っかかったのは、FilterにFileNameが入っていないとDeletedが発生しないというのがありました。
> Filter というプロパティもあるのですから、変に略さないでください。誤解を招くので…。
>
> NotifyFilter プロパティの話だとして、そういった対応表はないと思います。
> 列挙値の一覧を見て、抜いたら機能しなさそうだなぁ…で想像するところでしょうか。

すいません、うっかりやってしまいました。
NotifyFilterで正しいです。
あー、やはりやってみるしかないという類の奴なんですね。

> どうしてもといわれるのであれば、FileSystemWatcher のソースコードを見るところでしょうか。
> https://referencesource.microsoft.com/#System/services/io/system/io/FileSystemWatcher.cs,729
>
> そこから呼ばれている ReadDirectoryChangesW のパラメーター説明を読めば、一応、ここではファイル削除の例は示されています。
> "Any file name change in the watched directory or subtree causes a change notification wait operation to return. Changes include renaming, creating, or deleting a file."
> https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-readdirectorychangesw

Microsoftが提示している資料として展開できる物があればと思ったんですが、
直接的に説明をしている資料はないのですね。
なければ、トライ アンド エラーでやってみるしかないのでそういう物であると展開する事になると思います。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ