Two questions regarding the code from below:
- is this implementation an implementation of an async method?
is it the right implemention of logging an exception that might appear during deletion a file?
public static async Task DeleteFiles(StorageFolder folder, Regex mask, LoggingChannel logger) { var results = (from file in await folder.GetFilesAsync() where mask.IsMatch(file.Name) select file).Select(async f => await f.DeleteAsync()); await Task.WhenAll(results); foreach (var failed in results.Where(r => r.Exception != null)) logger.LogMessage(failed.Exception.ToString(), LoggingLevel.Warning); }
is it better (right?) way:
public static async Task DeleteFiles(StorageFolder folder, Regex mask, LoggingChannel logger)
{
foreach(var f in (await folder.GetFilesAsync()).Where( f => mask.IsMatch(f.Name)))
{
try
{
await f.DeleteAsync();
}
catch(Exception ex)
{
logger.LogMessage(ex.ToString(), LoggingLevel.Warning);
}
}
}