/// <summary> /// Returns a <see cref="DispatcherHandler"/> for the specified <see cref="Dispatcher"/>. /// If a <see cref="DispatcherHandler"/> does not exists yet then one is created. /// </summary> /// <param name="dispatcher"></param> /// <returns></returns> static DispatcherHandler GetOrCreateDispatcherHander(Dispatcher dispatcher) { Debug.Assert(dispatcher != null); var lastDispatcherHandler = _lastDispatcherHandler; if (lastDispatcherHandler != null && dispatcher == lastDispatcherHandler.Dispatcher) { return(lastDispatcherHandler); } else { lock (_dispatcherHandlerList) { var dispatcherHandler = _dispatcherHandlerList.Find(x => x.Dispatcher == dispatcher); if (dispatcherHandler == null) { dispatcherHandler = new DispatcherHandler(dispatcher); _dispatcherHandlerList.Add(dispatcherHandler); dispatcher.ShutdownFinished += Dispatcher_ShutdownFinished; } _lastDispatcherHandler = dispatcherHandler; return(dispatcherHandler); } } }
public void RunClangTidy(int aCommandId) { if (mCommandsController.Running) { return; } mCommandsController.Running = true; var task = System.Threading.Tasks.Task.Run(() => { try { DocumentsHandler.SaveActiveDocuments(); if (!VsServiceProvider.TryGetService(typeof(DTE), out object dte)) { return; } var dte2 = dte as DTE2; AutomationUtil.SaveDirtyProjects(dte2.Solution); CollectSelectedItems(false, ScriptConstants.kAcceptedFileExtensions); using (var silentFileController = new SilentFileChangerController()) { using (var fileChangerWatcher = new FileChangerWatcher()) { var tidySettings = SettingsProvider.GetSettingsPage(typeof(ClangTidyOptionsView)) as ClangTidyOptionsView; if (CommandIds.kTidyFixId == aCommandId || tidySettings.AutoTidyOnSave) { fileChangerWatcher.OnChanged += FileOpener.Open; string solutionFolderPath = dte2.Solution.FullName .Substring(0, dte2.Solution.FullName.LastIndexOf('\\')); fileChangerWatcher.Run(solutionFolderPath); FilePathCollector fileCollector = new FilePathCollector(); var filesPath = fileCollector.Collect(mItemsCollector.GetItems).ToList(); silentFileController.SilentFiles(filesPath); silentFileController.SilentFiles(dte2.Documents); } RunScript(aCommandId); } } } catch (Exception exception) { VsShellUtilities.ShowMessageBox(AsyncPackage, exception.Message, "Error", OLEMSGICON.OLEMSGICON_CRITICAL, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST); } }).ContinueWith(tsk => DispatcherHandler.Invoke(() => mCommandsController.OnAfterClangCommand(), DispatcherPriority.Background)); }
static void Dispatcher_ShutdownFinished(object sender, EventArgs e) { lock (_dispatcherHandlerList) { _dispatcherHandlerList.RemoveAll(x => x.Dispatcher == sender); if (_lastDispatcherHandler != null && _lastDispatcherHandler.Dispatcher == sender) { _lastDispatcherHandler = null; } } }
internal Dispatcher(Context context, Handler mainThreadHandler, IExecutorService service, ICache <Bitmap> cache, IDownloader <Bitmap> downloader) { m_DipatcherThread = new DispatcherThread(); m_DipatcherThread.Start(); m_Handler = new DispatcherHandler(m_DipatcherThread.Looper, this); m_Context = context; m_MainThreadHandler = mainThreadHandler; m_Cache = cache; m_Downloader = downloader; m_Service = service; m_AirplaneMode = AndroidUtils.IsAirplaneModeOn(m_Context); m_Receiver = new NetworkBroadcastReceiver(this); m_Receiver.Register(); }
public DispatcherStreamHandler(string method, string path, DispatcherHandler handler) : base(method, path, null, null) { m_handler = handler; }
public DispatcherStreamHandler(string method, string path, DispatcherHandler handler) : base(method, path, null, null) { m_handler = handler; }