我的應用程序從緩存中讀取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更改時加載dll(再次加載)。
如何在第一次運行時加載這些DLL? – Oliver 2012-03-21 12:22:35
重新加載DLL的可能很難,看到這裏: http://stackoverflow.com/questions/1024072/how-to-reload-an-assembly-for-a-net-application-domain – pingoo 2012-03-21 12:31:21
此外,在客戶端 - 服務器應用程序,它可能根本不可能。想象一下,你有一個DLL的方法,從附近的SQL服務器檢索數據。你怎麼可能會保證所有的客戶端一次只能使用該連接DLL的唯一版本?如果某些客戶端會以「olda方式」使用該服務器,並且其他客戶端將加載新的DLL,並且SQL服務器將遭受衝突的插入或刪除操作,那麼會發生什麼情況(並且認爲它們可以使用最新的DLL) ? – 2012-03-21 12:43:41