public void RemoveFrontend(CoreDispatcher d) { Logger.LogTrace("RemoveFrontend() locking"); SemaphoreSlim.Wait(CancelSource.Token); Logger.LogTrace("RemoveFrontend() locked"); Logger.LogInformation("Unregistering frontend of dispatcher {0}", d.GetHashCode()); Frames.Remove(d); SemaphoreSlim.Release(); Logger.LogTrace("RemoveFrontend() released"); }
public static IXamlDirect GetXamlDirectForWindow(CoreDispatcher dispatcher) { int hash = dispatcher.GetHashCode(); if (_xamlDirectCache.TryGetValue(hash, out IXamlDirect d)) { return(d); } d = XamlDirect.GetDefault(); _xamlDirectCache[hash] = d; return(d); }
public async Task RemoveFrontend(CoreDispatcher d) { Logger.LogTrace("RemoveFrontend() locking"); await SemaphoreSlim.WaitAsync(CancelSource.Token); try { Logger.LogTrace("RemoveFrontend() locked"); Logger.LogInformation("Unregistering frontend of dispatcher {0}", d.GetHashCode()); Frames.Remove(d); } catch (Exception e) { Logger.LogCritical($"RemoveFrontend failed(): {e.Message} ({e.GetType()})\n{e.StackTrace}"); } finally { SemaphoreSlim.Release(); Logger.LogTrace("RemoveFrontend() released"); } }