diff --git a/Duplicati/Library/Main/ResultClasses.cs b/Duplicati/Library/Main/ResultClasses.cs index aae7c8697..0073acf96 100644 --- a/Duplicati/Library/Main/ResultClasses.cs +++ b/Duplicati/Library/Main/ResultClasses.cs @@ -181,7 +181,7 @@ namespace Duplicati.Library.Main protected readonly BasicResults m_parent; protected System.Threading.Thread m_callerThread; - protected readonly object m_lock = new object(); + protected readonly SemaphoreSlim m_lock = new(1, 1); protected readonly Queue m_dbqueue; public virtual ParsedResultType ParsedResult @@ -266,7 +266,8 @@ namespace Duplicati.Library.Main await m_parent.FlushLog(db); else { - lock (m_lock) + await m_lock.WaitAsync(); + try { while (m_dbqueue.Count > 0) { @@ -274,6 +275,10 @@ namespace Duplicati.Library.Main await db.LogMessage(el.Type, el.Message, el.Exception); } } + finally + { + m_lock.Release(); + } } }