내 응용 프로그램은 캐시에서 DLL 데이터를 읽습니다. 그러나 개발자가 DLL을 변경하면 DllCaching이 변경되어야합니다. 그래서 FileSystemWatcher를 사용하여 DLL의 모든 변경 사항을 감지했습니다.FileSystemWatcher를 사용하여 캐시 데이터를 변경하는 방법은 무엇입니까?
아래 내 SYSTEN의 감시자 mechanizm :이 프로젝트는 asp.net에
public void CreateFileWatcher(string path)
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = path;
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
watcher.IncludeSubdirectories = true;
watcher.Filter = "*.dll";
// Add event handlers.
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnChanged);
// Begin watching.
watcher.EnableRaisingEvents = true;
}
private static void OnChanged(object source, FileSystemEventArgs e)
{
//FillCache
}
Button1_Click
{
CreateFileWatcher(@"C:/data")
// like that:
myarray = CachData
}
는 어떻게 만들 수 있나요? 어떻게 DLL을로드 할 때 (다시로드) Dlls 변경됩니다.
처음 실행시 어떻게 이러한 DLL을로드합니까? – Oliver
DLL을 다시로드하는 것이 어려울 수 있습니다. 여기를 참조하십시오. http://stackoverflow.com/questions/1024072/how-to-reload-an-assembly-for-a-net-application-domain – pingoo
또한 클라이언트 - 서버 애플 리케이션, 그것은 단순히 불가능할 수 있습니다. 상상해보십시오. 메서드가있는 DLL이있어서 인근의 SQL 서버에서 데이터를 가져옵니다. 아마 모든 클라이언트가 한 번에 그 연결 DLL의 유일한 버전으로 작업하게 될 것입니다. 어떤 클라이언트가 작동하고 (최신 DLL로 작업 할 수 있다고 생각하면) "오래된 방식으로"끊어지는 반면, 다른 DLL은 새 DLL을로드하고 SQL 서버는 삽입 또는 삭제 충돌로 고통을 겪습니다 ? –