文件拾取逻辑和重试逻辑

如果文件系统观察器事件提供程序无法读取事件文件,则事件提供程序可以将该文件添加到队列中,稍后再处理该文件。本主题介绍文件系统观察器文件拾取和重试逻辑。

文件队列

当启动了运行文件系统观察器事件提供程序的 Windows 服务或应用程序,并且启用了事件提供程序时,文件系统观察器事件提供程序会将其具有读取权限的所有 .xml 文件添加到队列中。将文件进行排队可以防止填满 FileSystemWatcher 类中的缓冲区,从而阻止文件的处理。

随着新的 .xml 文件的添加,这些文件将立即得到处理。只有当事件提供程序启动后,或者在尝试处理文件时出现错误时,才会将新文件添加到队列中。

文件系统观察器事件提供程序尝试根据在定义事件提供程序时指定的计划来处理队列中的文件。对于队列中的每个文件,文件系统观察器事件提供程序都会尝试从文件中读取数据。事件提供程序成功读取数据并将数据提交给应用程序后,该文件将从队列中删除。

请注意,使用一个线程来进行多次重试。Notification Services 可逐次处理重试(可包括多个文件);随后几次重试将跳过,直到完成这次重试。

锁定的文件和不可访问的文件

如果在文件系统观察器事件提供程序尝试读取数据时文件处于锁定状态,则事件提供程序会将该文件留在队列中,并为该文件增加一个计数。事件提供程序将按您指定的计划重试该文件,直到达到重试次数限制。

如果文件的安全设置不允许文件系统观察器事件提供程序访问该文件,则不会将该文件添加到队列中。而是 Notification Services 观察该文件在安全设置方面的更改。当发生安全设置更改后,文件将被添加到队列中。

请参阅

概念

文件验证
定义文件系统观察器事件提供程序

其他资源

文件系统观察器事件提供程序
标准事件提供程序
定义事件提供程序

帮助和信息

获取 SQL Server 2005 帮助