我有一个代码可以监视任何文件丢弃的特定文件夹。在文件丢弃时,将拾取该文件以进行进一步处理。
最近我得到了以下异常。我不确定导致此异常的原因或如何避免它,因为它间歇性地发生并且无法复制。还不确定这是在文件丢弃时发生还是仅在观察者轮询文件夹时发生。
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ArgumentOutOfRangeException
Length cannot be less than zero.
Parameter name: length
Stack:
at System.String.CtorCharPtrStartLength(Char*, Int32, Int32)
at System.IO.FileSystemWatcher.CompletionStatusChanged(UInt32, UInt32, System.Threading.NativeOverlapped*)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)
以下是我的示例代码:
{
// Code goes here
_watcher = new FileSystemWatcher();
_watcher.Path = _scanDirectory;
_watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
if (_watchSubTree)
{
_watcher.IncludeSubdirectories = true;
}
// Add event handlers.
_watcher.Created += new FileSystemEventHandler(OnCreated);
_watcher.Renamed += new RenamedEventHandler(OnRenamed);
}
答案 0 :(得分:1)
您应该创建一个托管代码的控制台应用程序。由于生命周期问题,此服务器端代码不应该是ASP.Net应用程序的一部分。
尝试从控制台应用程序运行代码时检查问题是否仍然存在。还要检查运行程序的useraccount是否具有对指定路径的文件系统访问权限。