InternalBufferOverflowException 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
内部缓冲区溢出时引发的异常。
public ref class InternalBufferOverflowException : SystemException
public class InternalBufferOverflowException : SystemException
[System.Serializable]
public class InternalBufferOverflowException : SystemException
type InternalBufferOverflowException = class
inherit SystemException
[<System.Serializable>]
type InternalBufferOverflowException = class
inherit SystemException
Public Class InternalBufferOverflowException
Inherits SystemException
- 继承
- 属性
示例
以下示例演示如何创建 FileSystemWatcher,以监视磁盘驱动器上发生的文件更改 (创建、删除、重命名、更改) 。 该示例还演示如何正确接收错误通知。
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
// Create a FileSystemWatcher to monitor all files on drive C.
FileSystemWatcher fsw = new FileSystemWatcher("C:\\");
// Watch for changes in LastAccess and LastWrite times, and
// the renaming of files or directories.
fsw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName |NotifyFilters.DirectoryName;
// Register a handler that gets called when a
// file is created, changed, or deleted.
fsw.Changed += new FileSystemEventHandler(OnChanged);
fsw.Created += new FileSystemEventHandler(OnChanged);
fsw.Deleted += new FileSystemEventHandler(OnChanged);
// Register a handler that gets called when a file is renamed.
fsw.Renamed += new RenamedEventHandler(OnRenamed);
// Register a handler that gets called if the
// FileSystemWatcher needs to report an error.
fsw.Error += new ErrorEventHandler(OnError);
// Begin watching.
fsw.EnableRaisingEvents = true;
Console.WriteLine("Press \'Enter\' to quit the sample.");
Console.ReadLine();
}
// This method is called when a file is created, changed, or deleted.
private static void OnChanged(object source, FileSystemEventArgs e)
{
// Show that a file has been created, changed, or deleted.
WatcherChangeTypes wct = e.ChangeType;
Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString());
}
// This method is called when a file is renamed.
private static void OnRenamed(object source, RenamedEventArgs e)
{
// Show that a file has been renamed.
WatcherChangeTypes wct = e.ChangeType;
Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString());
}
// This method is called when the FileSystemWatcher detects an error.
private static void OnError(object source, ErrorEventArgs e)
{
// Show that an error has been detected.
Console.WriteLine("The FileSystemWatcher has detected an error");
// Give more information if the error is due to an internal buffer overflow.
if (e.GetException().GetType() == typeof(InternalBufferOverflowException))
{
// This can happen if Windows is reporting many file system events quickly
// and internal buffer of the FileSystemWatcher is not large enough to handle this
// rate of events. The InternalBufferOverflowException error informs the application
// that some of the file system events are being lost.
Console.WriteLine(("The file system watcher experienced an internal buffer overflow: " + e.GetException().Message));
}
}
}
Imports System.IO
Module Module1
Sub Main()
' Create a FileSystemWatcher to monitor all files on drive C.
Dim fsw As New FileSystemWatcher("C:\")
' Watch for changes in LastAccess and LastWrite times, and
' the renaming of files or directories.
fsw.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite _
Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
' Register a handler that gets called when a
' file is created, changed, or deleted.
AddHandler fsw.Changed, New FileSystemEventHandler(AddressOf OnChanged)
' The commented line of code below is a shorthand of the above line.
' AddHandler fsw.Changed, AddressOf OnChanged
' NOTE: The shorthand version is used in the remainder of this code.
' FileSystemEventHandler
AddHandler fsw.Created, AddressOf OnChanged
' FileSystemEventHandler
AddHandler fsw.Deleted, AddressOf OnChanged
' Register a handler that gets called when a file is renamed.
' RenamedEventHandler
AddHandler fsw.Renamed, AddressOf OnRenamed
' Register a handler that gets called if the
' FileSystemWatcher needs to report an error.
' ErrorEventHandler
AddHandler fsw.Error, AddressOf OnError
' Begin watching.
fsw.EnableRaisingEvents = True
' Wait for the user to quit the program.
Console.WriteLine("Press 'Enter' to quit the sample.")
Console.ReadLine()
End Sub
' This method is called when a file is created, changed, or deleted.
Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
' Show that a file has been created, changed, or deleted.
Dim wct As WatcherChangeTypes = e.ChangeType
Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString())
End Sub
' This method is called when a file is renamed.
Private Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)
' Show that a file has been renamed.
Dim wct As WatcherChangeTypes = e.ChangeType
Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString())
End Sub
' This method is called when the FileSystemWatcher detects an error.
Private Sub OnError(ByVal source As Object, ByVal e As ErrorEventArgs)
' Show that an error has been detected.
Console.WriteLine("The FileSystemWatcher has detected an error")
' Give more information if the error is due to an internal buffer overflow.
If TypeOf e.GetException Is InternalBufferOverflowException Then
' This can happen if Windows is reporting many file system events quickly
' and internal buffer of the FileSystemWatcher is not large enough to handle this
' rate of events. The InternalBufferOverflowException error informs the application
' that some of the file system events are being lost.
Console.WriteLine( _
"The file system watcher experienced an internal buffer overflow: " _
+ e.GetException.Message)
End If
End Sub
End Module
注解
在 中 FileSystemWatcher,当收到文件更改通知时,系统会将这些更改存储在组件创建的缓冲区中,并传递到应用程序编程接口 (API) 。 如果在短时间内发生了许多更改,缓冲区很容易溢出,从而导致引发异常,这实际上会丢失所有更改。 若要防止缓冲区溢出,请使用 FileSystemWatcher.NotifyFilter 和 FileSystemWatcher.IncludeSubdirectories 属性筛选掉不需要的更改通知。 也可以通过 FileSystemWatcher.InternalBufferSize 属性增加内部缓冲区的大小。 但是,增加缓冲区大小的成本很高,因此请尽量减小缓冲区。
构造函数
InternalBufferOverflowException() |
初始化 InternalBufferOverflowException 类的新默认实例。 |
InternalBufferOverflowException(SerializationInfo, StreamingContext) |
已过时.
初始化 InternalBufferOverflowException 类的新的空实例,该实例可序列化且使用指定的 SerializationInfo 和 StreamingContext。 |
InternalBufferOverflowException(String) |
通过指定要显示的错误信息来初始化 InternalBufferOverflowException 类的新实例。 |
InternalBufferOverflowException(String, Exception) |
通过指定要显示的消息和生成的内部异常来初始化 InternalBufferOverflowException 类的新实例。 |
属性
Data |
获取键/值对的集合,这些键/值对提供有关该异常的其他用户定义信息。 (继承自 Exception) |
HelpLink |
获取或设置指向与此异常关联的帮助文件链接。 (继承自 Exception) |
HResult |
获取或设置 HRESULT(一个分配给特定异常的编码数字值)。 (继承自 Exception) |
InnerException |
获取导致当前异常的 Exception 实例。 (继承自 Exception) |
Message |
获取描述当前异常的消息。 (继承自 Exception) |
Source |
获取或设置导致错误的应用程序或对象的名称。 (继承自 Exception) |
StackTrace |
获取调用堆栈上的即时框架字符串表示形式。 (继承自 Exception) |
TargetSite |
获取引发当前异常的方法。 (继承自 Exception) |
方法
Equals(Object) |
确定指定对象是否等于当前对象。 (继承自 Object) |
GetBaseException() |
当在派生类中重写时,返回 Exception,它是一个或多个并发的异常的根本原因。 (继承自 Exception) |
GetHashCode() |
作为默认哈希函数。 (继承自 Object) |
GetObjectData(SerializationInfo, StreamingContext) |
已过时.
当在派生类中重写时,用关于异常的信息设置 SerializationInfo。 (继承自 Exception) |
GetType() |
获取当前实例的运行时类型。 (继承自 Exception) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
ToString() |
创建并返回当前异常的字符串表示形式。 (继承自 Exception) |
事件
SerializeObjectState |
已过时.
当异常被序列化用来创建包含有关该异常的徐列出数据的异常状态对象时会出现该问题。 (继承自 Exception) |