private void ViewRegisteredHandler(object sender, ViewRegistrationEventArgs e) { try { System.Threading.ThreadPool.QueueUserWorkItem((object state) => { try { System.Threading.Thread.Sleep(200); lock (_watcherSyncRoot) { if (e.View != null && !_textViews.ContainsKey(e.View)) { var textView = new TextView(e.View); _textViews.Add(e.View, textView); Log.Debug("Registered view: {0}", e.View.GetHashCode()); } } } catch (Exception ex) { Log.Error("Failed to register a view", ex); } }); } catch (Exception ex) { Log.Error("Failed to enqueue a work item", ex); } }
private void ViewUnregisteredHandler(object sender, ViewRegistrationEventArgs e) { try { lock (_watcherSyncRoot) { if (e.View != null && _textViews.ContainsKey(e.View)) { TextView view = _textViews[e.View]; _textViews.Remove(e.View); view.Dispose(); Log.Debug("Unregistered view: {0}", e.View.GetHashCode().ToString()); } } } catch (Exception ex) { Log.Error("Failed to unregister a view", ex); } }