Я пытаюсь использовать объект FileSystemWatcher
для просмотра каталогов, когда создаются новые файлы, чтобы поддерживать комбинированный список файлов, представленных в реальном времени.
К сожалению, файлы, созданные в коде, не являютсязапуск обработчика событий, присоединенного к событию Created
.
Почему это не работает, и что я могу сделать, чтобы заставить его работать, используя объект FileSystemWatcher
?(Я видел this и, скорее всего, для этой работы не нужно зависеть от внешней библиотеки).
Я видел работу FileSystemWatcher
, когда щелкнул правой кнопкой мыши ->создать новый файл, но мне нужно, чтобы он работал, когда программа вызывает .Create( )
для FileInfo
объекта.
В соответствии с требованиями Minimal, Complete и Verifiable Example :
using System;
using System.IO;
using System.Security.Permissions;
namespace MCVEConsole {
class Program {
[PermissionSet( SecurityAction.Demand, Name = "FullTrust" )]
static void Main( string[] args ) {
DirectoryInfo myDirectory = new DirectoryInfo(
Environment.GetFolderPath( Environment.SpecialFolder.MyDocuments )
).CreateSubdirectory( "MCVEConsole" );
FileSystemWatcher fSW =
new FileSystemWatcher( myDirectory.FullName, "*.txt" ) {
NotifyFilter =
NotifyFilters.CreationTime |
NotifyFilters.LastAccess |
NotifyFilters.LastWrite
};
fSW.Created += new FileSystemEventHandler( _Changed );
fSW.Deleted += new FileSystemEventHandler( _Changed );
fSW.EnableRaisingEvents = true;
new FileInfo(
Path.Combine( myDirectory.FullName, "foo.txt" ) ).Create( ).Close( );
void _Changed( object sender, FileSystemEventArgs e ) =>
Console.WriteLine( "bar" );
Console.WriteLine( "Press any key to continue..." );
Console.ReadKey( );
}
}
}
Причина атрибута [PermissionSet]
заключается в том, что я заметил его здесь и подумал, что это может быть проблемой (не было).