From d67005fa0ff0382c4464ccff83c99e03fdb8c445 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 23 Jan 2010 21:14:06 +0000 Subject: [PATCH] Ignore IOException when saving layout (maybe another process is writing to the layout file). git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5436 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../UsageDataCollector/UsageDataSessionWriter.cs | 5 ++--- .../Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs | 7 ++++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/AddIns/Misc/UsageDataCollector/UsageDataCollector/UsageDataSessionWriter.cs b/src/AddIns/Misc/UsageDataCollector/UsageDataCollector/UsageDataSessionWriter.cs index 4e12446edd..03d967add8 100644 --- a/src/AddIns/Misc/UsageDataCollector/UsageDataCollector/UsageDataSessionWriter.cs +++ b/src/AddIns/Misc/UsageDataCollector/UsageDataCollector/UsageDataSessionWriter.cs @@ -303,9 +303,8 @@ namespace ICSharpCode.UsageDataCollector static string GetTypeName(Exception exception) { string type = exception.GetType().FullName; - ExternalException ee = exception as ExternalException; - if (ee != null) - return type + " (ErrorCode " + ee.ErrorCode.ToString("x8") + ")"; + if (exception is ExternalException || exception is System.IO.IOException) + return type + " (" + Marshal.GetHRForException(ee).ToString("x8") + ")"; else return type; } diff --git a/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs index fc3a74b50c..234c8cd9d8 100644 --- a/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs +++ b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs @@ -309,7 +309,12 @@ namespace ICSharpCode.SharpDevelop.Gui Directory.CreateDirectory(configPath); string fileName = Path.Combine(configPath, current.FileName); LoggingService.Info("Saving layout file: " + fileName); - dockingManager.SaveLayout(fileName); + try { + dockingManager.SaveLayout(fileName); + } catch (IOException ex) { + // ignore IO errors (maybe switching layout in two SharpDevelop instances at once?) + LoggingService.Warn(ex); + } } } catch (Exception e) { MessageService.ShowException(e);