FileSystemWatcher 未触发。创建于 FileInfo.Create( )
FileSystemWatcher not firing .Created on FileInfo.Create( )
我正在尝试使用 FileSystemWatcher
对象来监视目录以了解何时创建新文件以维护实时存在的文件组合框。
不幸的是,在代码中创建的文件没有触发附加到 Created
事件的事件处理程序。
为什么这不起作用,我可以使用 FileSystemWatcher
对象做些什么来让它起作用? (我已经看到 并且宁愿不必依赖外部库来完成这项工作)。
我已经看到 FileSystemWatcher
在我右键单击 -> 创建新文件时工作,但是当程序在 FileInfo
对象上调用 .Create( )
时我需要它工作。
符合Minimal, Complete, and 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]
属性的原因是因为我注意到它 here,并认为它可能是问题所在(事实并非如此)。
尝试NotifyFilters.FileName
。这就是我必须添加才能看到正在创建的新文件的内容。不是我所期望的,但给出了我需要的结果。
我正在尝试使用 FileSystemWatcher
对象来监视目录以了解何时创建新文件以维护实时存在的文件组合框。
不幸的是,在代码中创建的文件没有触发附加到 Created
事件的事件处理程序。
为什么这不起作用,我可以使用 FileSystemWatcher
对象做些什么来让它起作用? (我已经看到
我已经看到 FileSystemWatcher
在我右键单击 -> 创建新文件时工作,但是当程序在 FileInfo
对象上调用 .Create( )
时我需要它工作。
符合Minimal, Complete, and 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]
属性的原因是因为我注意到它 here,并认为它可能是问题所在(事实并非如此)。
尝试NotifyFilters.FileName
。这就是我必须添加才能看到正在创建的新文件的内容。不是我所期望的,但给出了我需要的结果。