|
7 | 7 | using Microsoft.Extensions.Configuration; |
8 | 8 | using MySqlConnector; |
9 | 9 | using ReactiveUI; |
| 10 | +using Serilog; |
10 | 11 | using System; |
11 | 12 | using System.Collections.Generic; |
12 | 13 | using System.Collections.ObjectModel; |
@@ -255,42 +256,67 @@ private async Task SetDisplayImagesForRefreshImages((List<Image> images, List<Im |
255 | 256 | { |
256 | 257 | List<ImageViewModel> oldImages = _mainWindowViewModel.Images.ToList(); |
257 | 258 | _mainWindowViewModel.Images = new ObservableCollection<ImageViewModel>(); |
258 | | - await Task.Run(() => |
| 259 | + try |
259 | 260 | { |
260 | | - //only dispose of image bitmaps that are not in SessionHistory |
261 | | - foreach (ImageViewModel img in oldImages) |
| 261 | + await Task.Run(() => |
262 | 262 | { |
263 | | - if (!IsInSessionHistory(img)) |
| 263 | + //only dispose of image bitmaps that are not in SessionHistory |
| 264 | + foreach (ImageViewModel img in oldImages) |
264 | 265 | { |
265 | | - img.ImageBitmap?.Dispose(); |
| 266 | + if (!IsInSessionHistory(img)) |
| 267 | + { |
| 268 | + img.ImageBitmap?.Dispose(); |
| 269 | + } |
266 | 270 | } |
267 | | - } |
268 | | - }); |
| 271 | + }); |
| 272 | + } |
| 273 | + catch (Exception ex) |
| 274 | + { |
| 275 | + Log.Error(ex, |
| 276 | + "RefreshImages Failed disposing image bitmaps during refresh. " + |
| 277 | + "Filter={Filter}, ImageCount={ImageCount}", |
| 278 | + currentFilter, |
| 279 | + oldImages.Count); |
| 280 | + throw; |
| 281 | + } |
269 | 282 | } |
270 | 283 | else |
271 | 284 | { |
272 | 285 | List<FolderViewModel> oldFolders = _mainWindowViewModel.LibraryFolders.ToList(); |
273 | 286 | List<ImageViewModel> oldImages = _mainWindowViewModel.Images.ToList(); |
274 | 287 | _mainWindowViewModel.Images = new ObservableCollection<ImageViewModel>(); |
275 | 288 | _mainWindowViewModel.LibraryFolders = new ObservableCollection<FolderViewModel>(); |
276 | | - await Task.Run(() => |
| 289 | + try |
277 | 290 | { |
278 | | - foreach (ImageViewModel img in oldImages) |
| 291 | + await Task.Run(() => |
279 | 292 | { |
280 | | - if (!IsInSessionHistory(img)) |
| 293 | + foreach (ImageViewModel img in oldImages) |
281 | 294 | { |
282 | | - img.ImageBitmap?.Dispose(); |
| 295 | + if (!IsInSessionHistory(img)) |
| 296 | + { |
| 297 | + img.ImageBitmap?.Dispose(); |
| 298 | + } |
283 | 299 | } |
284 | | - } |
285 | 300 |
|
286 | | - foreach (FolderViewModel folder in oldFolders) |
287 | | - { |
288 | | - if (!IsInSessionHistory(folder)) |
| 301 | + foreach (FolderViewModel folder in oldFolders) |
289 | 302 | { |
290 | | - folder.CoverImageBitmap?.Dispose(); |
| 303 | + if (!IsInSessionHistory(folder)) |
| 304 | + { |
| 305 | + folder.CoverImageBitmap?.Dispose(); |
| 306 | + } |
291 | 307 | } |
292 | | - } |
293 | | - }); |
| 308 | + }); |
| 309 | + } |
| 310 | + catch (Exception ex) |
| 311 | + { |
| 312 | + Log.Error(ex, |
| 313 | + "RefreshImages Failed disposing image/folder bitmaps during refresh. " + |
| 314 | + "Filter={Filter}, ImageCount={ImageCount}, FolderCount={FolderCount}", |
| 315 | + currentFilter, |
| 316 | + oldImages.Count, |
| 317 | + oldFolders.Count); |
| 318 | + throw; |
| 319 | + } |
294 | 320 | } |
295 | 321 | displayImages = ImagePagination(); |
296 | 322 | await MapTagsToImagesAddToObservable(); |
@@ -426,41 +452,66 @@ private async Task SetDisplayFoldersForRefreshFolders((List<Folder> folders, Lis |
426 | 452 | { |
427 | 453 | List<FolderViewModel> oldFolders = _mainWindowViewModel.LibraryFolders.ToList(); |
428 | 454 | _mainWindowViewModel.LibraryFolders = new ObservableCollection<FolderViewModel>(); |
429 | | - await Task.Run(() => |
| 455 | + try |
430 | 456 | { |
431 | | - foreach (FolderViewModel folder in oldFolders) |
| 457 | + await Task.Run(() => |
432 | 458 | { |
433 | | - if (!IsInSessionHistory(folder)) |
| 459 | + foreach (FolderViewModel folder in oldFolders) |
434 | 460 | { |
435 | | - folder.CoverImageBitmap?.Dispose(); |
| 461 | + if (!IsInSessionHistory(folder)) |
| 462 | + { |
| 463 | + folder.CoverImageBitmap?.Dispose(); |
| 464 | + } |
436 | 465 | } |
437 | | - } |
438 | | - }); |
| 466 | + }); |
| 467 | + } |
| 468 | + catch (Exception ex) |
| 469 | + { |
| 470 | + Log.Error(ex, |
| 471 | + "RefreshFolders Failed disposing folder cover image bitmaps during refresh. " + |
| 472 | + "Filter={Filter}, FolderCount={FolderCount}", |
| 473 | + currentFilter, |
| 474 | + oldFolders.Count); |
| 475 | + throw; |
| 476 | + } |
439 | 477 | } |
440 | 478 | else |
441 | 479 | { |
442 | 480 | List<FolderViewModel> oldFolders = _mainWindowViewModel.LibraryFolders.ToList(); |
443 | 481 | List<ImageViewModel> oldImages = _mainWindowViewModel.Images.ToList(); |
444 | 482 | _mainWindowViewModel.Images = new ObservableCollection<ImageViewModel>(); |
445 | 483 | _mainWindowViewModel.LibraryFolders = new ObservableCollection<FolderViewModel>(); |
446 | | - await Task.Run(() => |
| 484 | + try |
447 | 485 | { |
448 | | - foreach (ImageViewModel img in oldImages) |
| 486 | + await Task.Run(() => |
449 | 487 | { |
450 | | - if (!IsInSessionHistory(img)) |
| 488 | + foreach (ImageViewModel img in oldImages) |
451 | 489 | { |
452 | | - img.ImageBitmap?.Dispose(); |
| 490 | + if (!IsInSessionHistory(img)) |
| 491 | + { |
| 492 | + img.ImageBitmap?.Dispose(); |
| 493 | + } |
453 | 494 | } |
454 | | - } |
455 | 495 |
|
456 | | - foreach (FolderViewModel folder in oldFolders) |
457 | | - { |
458 | | - if (!IsInSessionHistory(folder)) |
| 496 | + foreach (FolderViewModel folder in oldFolders) |
459 | 497 | { |
460 | | - folder.CoverImageBitmap?.Dispose(); |
| 498 | + if (!IsInSessionHistory(folder)) |
| 499 | + { |
| 500 | + folder.CoverImageBitmap?.Dispose(); |
| 501 | + } |
461 | 502 | } |
462 | | - } |
463 | | - }); |
| 503 | + }); |
| 504 | + } |
| 505 | + catch (Exception ex) |
| 506 | + { |
| 507 | + Log.Error(ex, |
| 508 | + "RefreshFolders Failed disposing image/folder bitmaps during refresh. " + |
| 509 | + "Filter={Filter}, ImageCount={ImageCount}, FolderCount={FolderCount}", |
| 510 | + currentFilter, |
| 511 | + oldImages.Count, |
| 512 | + oldFolders.Count); |
| 513 | + throw; |
| 514 | + } |
464 | 515 | } |
465 | 516 | displayFolders = FolderPagination(); |
466 | 517 | await MapTagsToFoldersAddToObservable(); |
|
0 commit comments