System.IO.FileSystemWatcher.CompletionStatusChanged中的System.ArgumentOutOfRangeException

时间:2013-12-19 10:37:46

标签: c# asp.net exception

我有一个代码可以监视任何文件丢弃的特定文件夹。在文件丢弃时,将拾取该文件以进行进一步处理。

最近我得到了以下异常。我不确定导致此异常的原因或如何避免它,因为它间歇性地发生并且无法复制。还不确定这是在文件丢弃时发生还是仅在观察者轮询文件夹时发生。

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);
}

1 个答案:

答案 0 :(得分:1)

您应该创建一个托管代码的控制台应用程序。由于生命周期问题,此服务器端代码不应该是ASP.Net应用程序的一部分。

尝试从控制台应用程序运行代码时检查问题是否仍然存在。还要检查运行程序的useraccount是否具有对指定路径的文件系统访问权限。