HostFileChangeMonitor 클래스

정의

디렉터리 및 파일 경로를 모니터링하고 모니터링된 항목의 변경 내용을 캐시에 알립니다.Monitors directories and file paths and notifies the cache of changes to the monitored items. 이 클래스는 상속될 수 없습니다.This class cannot be inherited.

public ref class HostFileChangeMonitor sealed : System::Runtime::Caching::FileChangeMonitor
public sealed class HostFileChangeMonitor : System.Runtime.Caching.FileChangeMonitor
type HostFileChangeMonitor = class
    inherit FileChangeMonitor
Public NotInheritable Class HostFileChangeMonitor
Inherits FileChangeMonitor
상속
HostFileChangeMonitor

예제

다음 예제에서는 사용 하는 캐시 항목을 HostFileChangeMonitor 파일 시스템에 원본 데이터 (즉, 파일)의 상태를 모니터링 하는 개체입니다.The following example creates a cache item that uses a HostFileChangeMonitor object to monitor the state of the source data (which is a file) on the file system. 캐시 엔트리를 사용 하 여 정의 된를 CacheItemPolicy 캐시 엔트리에 대 한 제거 집합과 만료 정보를 제공 하는 개체입니다.The cache entry is defined using a CacheItemPolicy object to provide eviction and expiration details for the cache entry.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Runtime.Caching;
using System.IO;

public partial class _Default : System.Web.UI.Page
{


    protected void Button1_Click1(object sender, EventArgs e)
    {
        ObjectCache cache = MemoryCache.Default;
        string fileContents = cache["filecontents"] as string;
       
        if (fileContents == null)
        {
            CacheItemPolicy policy = new CacheItemPolicy();
            policy.AbsoluteExpiration =
                DateTimeOffset.Now.AddSeconds(10.0);

            List<string> filePaths = new List<string>();
            string cachedFilePath = Server.MapPath("~") +
                "\\cacheText.txt";

            filePaths.Add(cachedFilePath);

            policy.ChangeMonitors.Add(new
                HostFileChangeMonitor(filePaths));

            // Fetch the file contents.
            fileContents = File.ReadAllText(cachedFilePath) + "\n"
                + DateTime.Now.ToString();

            cache.Set("filecontents", fileContents, policy);

        }

        Label1.Text = fileContents;
    }
}
Imports System.Runtime.Caching
Imports System.IO

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Button1.Click
        Dim cache As ObjectCache = MemoryCache.Default
        Dim fileContents As String = TryCast(cache("filecontents"), _
            String)
        If fileContents Is Nothing Then
            Dim policy As New CacheItemPolicy()
            policy.AbsoluteExpiration = _
                DateTimeOffset.Now.AddSeconds(10.0)
            Dim filePaths As New List(Of String)()
            Dim cachedFilePath As String = Server.MapPath("~") & _
                "\cacheText.txt"
            filePaths.Add(cachedFilePath)
            policy.ChangeMonitors.Add(New  _
                HostFileChangeMonitor(filePaths))

            ' Fetch the file contents.
            fileContents = File.ReadAllText(cachedFilePath) & _
                vbCrLf & DateTime.Now.ToString()
            cache.Set("filecontents", fileContents, policy)
        End If
        Label1.Text = fileContents
    End Sub

End Class

설명

합니다 HostFileChangeMonitor 클래스의 구체적인 구현인는 FileChangeMonitor 형식입니다.The HostFileChangeMonitor class is a concrete implementation of the FileChangeMonitor type. 이 클래스는 봉인, 따라서 확장할 수 없습니다.This class is sealed, therefore it cannot be extended. 이 클래스는 기존 캐시 구현을 사용 하 고 파일 및 디렉터리의 변경 사항 모니터링 하려는 경우에 유용 합니다.This class is useful if you want to use an existing cache implementation and to monitor files and directories for changes.

각 지정 된 파일이 나 디렉터리 경로 HostFileChangeMonitor 클래스는 다음과 같이 변경 중 하나가 발생할 경우 변경 알림을 트리거합니다.For each specified file or directory path, the HostFileChangeMonitor class triggers a change notification if any of the following changes occur:

  • 디렉터리 변경 내용 모니터링 되는 파일의 이름입니다.The name of the monitored file or directory changes.

  • 지정 된 파일 또는 디렉터리 모니터 생성 되었지만 나중에 만들어진 시 존재 하지 않았습니다.The specified file or directory did not exist at the time the monitor was created, but was created later. 즉, 파일 또는 디렉터리를 모니터링된 하는 항목의 범위에서 만들어졌습니다.In other words, a file or directory was created in the scope of the monitored items.

  • 모니터링 되는 파일의 크기를 변경 합니다.The size of a monitored file changed.

  • 모니터링 되는 파일의 내용을 변경 되거나 모니터링 되는 디렉터리의 내용을 변경 합니다.The contents of a monitored file changed, or the contents of a monitored directory changed.

  • 파일 또는 디렉터리의 액세스 제어 목록 (ACL) 변경 되었습니다.The access control list (ACL) of the file or directory was changed.

  • 모니터링 되는 파일 또는 디렉터리 삭제 되었습니다.The monitored file or directory was deleted.

동시에 모니터링 되는 파일 또는 디렉터리에 대 한 너무 많은 변경이 발생 하는 경우는 HostFileChangeMonitor 인스턴스 특정 변경 내용 추적할 수 없게 됩니다.If too many changes occur for the monitored file or directory at the same time, the HostFileChangeMonitor instance can lose track of specific changes. 이 시나리오에서는 HostFileChangeMonitor 클래스 변경 알림을 트리거합니다.In this scenario, the HostFileChangeMonitor class triggers a change notification. 이 시나리오는 발생할 가능성이 때는 HostFileChangeMonitor 인스턴스 디렉터리를 모니터링 하 고 짧은 기간에는 디렉터리 구조체의 범위에서 많은 변경이 발생 합니다.This scenario is more likely to occur when the HostFileChangeMonitor instance monitors a directory, and many changes occur in the scope of the directory structure in a short period of time.

때문에의 용도 HostFileChangeMonitor 클래스만 알리는 것 모니터링 대상 파일과 디렉터리의 집합에서 변경 된 내용이 중요 한 특정 변경 내용 자세히 캡처되지 않는 간주 되지 않습니다.Because the purpose of the HostFileChangeMonitor class is only to signal that something has changed among the set of monitored files and directories, it is not considered important that details about a specific change are not captured. 용도 HostFileChangeMonitor 클래스 엔트리를 캐시 (또는 항목)가 제거 될 수 있도록 해당 상태 알림 변경를 제공 하는 것입니다.The purpose of the HostFileChangeMonitor class is to provide notification that state changed so that a cache entry (or entries) can be evicted. 때문에 HostFileChangeMonitor 클래스 변경 내용을 정확 하 게 나타내지 않습니다, 내부 변경 내용 추적 오버플로 관련이 없습니다.Because the HostFileChangeMonitor class does not indicate exactly what changed, internal-change tracking overflow is irrelevant.

에 대 한 경로 제공 하는 경우는 HostFileChangeMonitor 인스턴스, 디렉터리 및 파일 경로 디렉터리 또는 파일에 전체 경로 여야 합니다.When you supply paths to a HostFileChangeMonitor instance, the directory and file paths must be full paths to the directory or file. 상대 경로 및 경로에 와일드 카드 문자 허용 되지 않습니다.Relative paths and wildcard characters in paths are not allowed.

경우는 HostFileChangeMonitor 모니터링된 항목에 대 한 액세스에 사용 되는 Windows id가 ASP.NET 애플리케이션에 대 한 애플리케이션 id, 클래스는 ASP.NET 애플리케이션에서 사용 됩니다.When the HostFileChangeMonitor class is used in an ASP.NET application, the Windows identity that is used for access to monitored items is the application identity for the ASP.NET application. 즉, 애플리케이션 id 중 하나로 설정 됩니다.In other words, the application identity will be one of the following:

  • 프로세스 id입니다.The process identity.

  • 구성 된 애플리케이션 id입니다.The configured application identity.

  • UNC 자격 증명 UNC 공유에서 애플리케이션이 실행 됩니다.The UNC credential if the application is running from a UNC share.

경우는 HostFileChangeMonitor 클래스는 ASP.NET 이외의 애플리케이션에서 사용 됩니다는 FileSystemWatcher 클래스 파일을 모니터링 하는 데 내부적으로 사용 됩니다.When the HostFileChangeMonitor class is used in a non-ASP.NET application, the FileSystemWatcher class is used internally to monitor files. 결과적으로, 모니터링 되는 파일 또는 디렉터리에 적용 되는 모든 ACL (액세스 제어 목록)는 현재 스레드의 Windows id에 적용 됩니다.As a result, whatever access control list (ACL) applies to a monitored file or directory is applied to the Windows identity of the current thread.

참고

호출자는 적절 한 수준의 코드 액세스 보안 (CA) 권한이 있어야 합니다. 및 모니터링 되는 모든 디렉터리 및 경로 대 한 NTFS 권한이 있어야 합니다.Callers must have the appropriate level of code access security (CAS) permissions and must have NTFS permissions to all monitored directories and paths.

생성자

HostFileChangeMonitor(IList<String>)

HostFileChangeMonitor 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the HostFileChangeMonitor class.

속성

FilePaths

HostFileChangeMonitor(IList<String>) 생성자에 전달된 디렉터리 및 파일 경로 컬렉션을 가져옵니다.Gets the collection of directories and file paths that was passed to the HostFileChangeMonitor(IList<String>) constructor.

HasChanged

ChangeMonitor 클래스에서 모니터링하는 상태가 변경되었음을 나타내는 값을 가져옵니다.Gets a value that indicates that the state that is monitored by the ChangeMonitor class has changed.

(다음에서 상속됨 ChangeMonitor)
IsDisposed

ChangeMonitor 클래스의 파생 인스턴스가 삭제되었는지 여부를 나타내는 값을 가져옵니다.Gets a value that indicates that the derived instance of a ChangeMonitor class is disposed.

(다음에서 상속됨 ChangeMonitor)
LastModified

모니터링되는 파일 또는 경로를 마지막으로 쓴 시간을 나타내는 읽기 전용 값을 가져옵니다.Gets a read-only value that indicates the last write time of a monitored file or path.

UniqueId

모니터링된 디렉터리 및 파일 경로 집합을 기반으로 하는 HostFileChangeMonitor 인스턴스의 식별자를 가져옵니다.Gets an identifier for the HostFileChangeMonitor instance that is based on the set of monitored directories and file paths.

메서드

Dispose()

ChangeMonitor 클래스의 현재 인스턴스에서 사용하는 모든 리소스를 해제합니다.Releases all resources that are used by the current instance of the ChangeMonitor class.

(다음에서 상속됨 ChangeMonitor)
Dispose(Boolean)

모든 관리되는 리소스 및 관리되지 않는 리소스와 ChangeMonitor 인스턴스에 대한 모든 참조를 해제합니다.Releases all managed and unmanaged resources and any references to the ChangeMonitor instance. 이 오버로드는 파생된 변경 모니터 클래스에 의해 구현되어야 합니다.This overload must be implemented by derived change-monitor classes.

(다음에서 상속됨 ChangeMonitor)
Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
InitializationComplete()

파생 클래스의 생성자에서 호출되어 초기화가 완료되었음을 나타냅니다.Called from the constructor of derived classes to indicate that initialization is finished.

(다음에서 상속됨 ChangeMonitor)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
NotifyOnChanged(OnChangedCallback)

종속성이 변경되었을 때 콜백을 등록하고 ObjectCache 대리자를 통해 OnChangedCallback 인스턴스를 알리기 위해 캐시 구현자에 의해 호출됩니다.Called by Cache implementers to register a callback and notify an ObjectCache instance through the OnChangedCallback delegate when a dependency has changed.

(다음에서 상속됨 ChangeMonitor)
OnChanged(Object)

종속성이 변경될 때 이벤트를 발생시킬 수 있도록 파생 클래스에서 호출됩니다.Called by derived classes to raise the event when a dependency changes.

(다음에서 상속됨 ChangeMonitor)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

적용 대상