mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2026-04-05 14:37:01 +00:00
Unified ImageCacheItem
This commit is contained in:
parent
e138cb83ab
commit
2709f90cdc
12 changed files with 133 additions and 176 deletions
|
|
@ -54,53 +54,77 @@ namespace MapControl.Caching
|
|||
|
||||
private void CleanRootDirectory()
|
||||
{
|
||||
foreach (var dir in new DirectoryInfo(rootDirectory).EnumerateDirectories())
|
||||
try
|
||||
{
|
||||
var deletedFileCount = CleanDirectory(dir);
|
||||
|
||||
if (deletedFileCount > 0)
|
||||
foreach (var dir in new DirectoryInfo(rootDirectory).EnumerateDirectories())
|
||||
{
|
||||
Debug.WriteLine("ImageFileCache: Cleaned {0} files in {1}", deletedFileCount, dir);
|
||||
var deletedFileCount = CleanDirectory(dir);
|
||||
|
||||
if (deletedFileCount > 0)
|
||||
{
|
||||
Debug.WriteLine("ImageFileCache: Cleaned {0} files in {1}", deletedFileCount, dir);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine("ImageFileCache: Failed enumerating directories in {0}: {1}", rootDirectory, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private static int CleanDirectory(DirectoryInfo directory)
|
||||
{
|
||||
var deletedFileCount = 0;
|
||||
|
||||
foreach (var dir in directory.EnumerateDirectories())
|
||||
try
|
||||
{
|
||||
deletedFileCount += CleanDirectory(dir);
|
||||
deletedFileCount += directory.EnumerateDirectories().Sum(dir => CleanDirectory(dir));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine("ImageFileCache: Failed enumerating directories in {0}: {1}", directory.FullName, ex.Message);
|
||||
}
|
||||
|
||||
foreach (var file in directory.EnumerateFiles())
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
if (ReadExpiration(file) < DateTime.UtcNow)
|
||||
{
|
||||
file.Delete();
|
||||
deletedFileCount++;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine("ImageFileCache: Failed cleaning {0}: {1}", file.FullName, ex.Message);
|
||||
}
|
||||
deletedFileCount += directory.EnumerateFiles().Sum(file => CleanFile(file));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine("ImageFileCache: Failed enumerating files in {0}: {1}", directory.FullName, ex.Message);
|
||||
}
|
||||
|
||||
if (!directory.EnumerateFileSystemInfos().Any())
|
||||
try
|
||||
{
|
||||
try
|
||||
if (!directory.EnumerateFileSystemInfos().Any())
|
||||
{
|
||||
directory.Delete();
|
||||
}
|
||||
catch (Exception ex)
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine("ImageFileCache: Failed cleaning {0}: {1}", directory.FullName, ex.Message);
|
||||
}
|
||||
|
||||
return deletedFileCount;
|
||||
}
|
||||
|
||||
private static int CleanFile(FileInfo file)
|
||||
{
|
||||
var deletedFileCount = 0;
|
||||
|
||||
try
|
||||
{
|
||||
if (ReadExpiration(file) < DateTime.UtcNow)
|
||||
{
|
||||
Debug.WriteLine("ImageFileCache: Failed cleaning {0}: {1}", directory.FullName, ex.Message);
|
||||
file.Delete();
|
||||
deletedFileCount = 1;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine("ImageFileCache: Failed cleaning {0}: {1}", file.FullName, ex.Message);
|
||||
}
|
||||
|
||||
return deletedFileCount;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,15 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace MapControl
|
||||
{
|
||||
namespace Caching
|
||||
{
|
||||
public class ImageCacheItem
|
||||
{
|
||||
public byte[] Buffer { get; set; }
|
||||
public DateTime Expiration { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
#if NETFRAMEWORK
|
||||
static class ConcurrentQueueEx
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue