示例#1
0
 public void Dispose()
 {
     _disposing = true;
     // best effort process disposal
     try
     {
         if (_process != null)
         {
             if (!_process.HasExited)
             {
                 _process.Kill();
                 if (!_process.WaitForExit(processExitTimeoutInMilliseconds))
                 {
                     _workerProcessLogger.LogWarning($"Worker process has not exited despite waiting for {processExitTimeoutInMilliseconds} ms");
                 }
             }
             _process.Dispose();
         }
         _processMonitor.Dispose();
     }
     catch (Exception exc)
     {
         _workerProcessLogger?.LogDebug(exc, "Exception on worker disposal.");
         //ignore
     }
 }
示例#2
0
文件: Program.cs 项目: Desz01ate/Mute
 static bool ConsoleEventCallback(int eventType)
 {
     if (eventType == 2)
     {
         monitor?.Dispose();
     }
     return(false);
 }
示例#3
0
 void ReleaseResources()
 {
     if (procMon != null)
     {
         procMon.TreeStarted   -= ProcMon_TreeStarted;
         procMon.TreeDestroyed -= Monitor_TreeDestroyed;
         procMon.Dispose();
     }
 }
示例#4
0
 public void ReleaseResources()
 {
     watcherToken?.Cancel();
     if (procMon != null)
     {
         procMon.TreeStarted -= ProcMon_TreeStarted;
         procMon.Dispose();
     }
 }
示例#5
0
 public void ReleaseResources()
 {
     procMon?.Dispose();
     if (butler != null)
     {
         butler.RequestReceived      -= Butler_RequestReceived;
         butler.NotificationReceived -= Butler_NotificationReceived;
         butler.Dispose();
     }
 }
        public override void Dispose()
        {
            isDisposed = true;
            watcherToken?.Cancel();
            playTask?.Wait(5000); // Give startup script time to gracefully shutdown.
            procMon?.Dispose();
            stopWatch?.Stop();
            if (playRuntime?.IsDisposed == false)
            {
                playRuntime?.Dispose();
            }

            watcherToken?.Dispose();
            currentEmuProfile = null;
        }
示例#7
0
        public static List <SiteProcessInfo> GetProcesses()
        {
            List <SiteProcessInfo> list = new List <SiteProcessInfo>();
            var server = new ServerManager();//请使用管理员模式

            foreach (Site site in server.Sites)
            {
                SiteProcessInfo siteInfo = new SiteProcessInfo()
                {
                    Name        = site.Name,
                    ProcessInfo = new Dictionary <string, ProcessInfo>()
                };
                foreach (var application in site.Applications)
                {
                    siteInfo.ProcessInfo[application.ApplicationPoolName] = new ProcessInfo();
                }
                list.Add(siteInfo);
            }
            foreach (var item in server.ApplicationPools)
            {
                foreach (WorkerProcess workerProcess in item.WorkerProcesses)
                {
                    var            t              = workerProcess.ProcessId;
                    var            processes      = Process.GetProcesses();
                    var            p              = processes.FirstOrDefault(q => q.Id == t);
                    ProcessMonitor processMonitor = new ProcessMonitor(p);
                    processMonitor.Init();
                    processMonitor.UpdateInfo();
                    foreach (var site in list)
                    {
                        if (site.ProcessInfo.TryGetValue(workerProcess.AppPoolName, out ProcessInfo processInfo))
                        {
                            processInfo.Id           = workerProcess.ProcessId;
                            processInfo.InstanceName = processMonitor.InstanceName;
                            processInfo.ProcessName  = processMonitor.ProcessName;
                            processInfo.FileName     = processMonitor.FileName;
                            processInfo.MemoryUsage  = processMonitor.MemoryUsage;
                            processInfo.CpuUsage     = processMonitor.CpuUsage;
                        }
                    }
                    processMonitor.Dispose();
                }
            }
            return(list);
        }
 public void Dispose()
 {
     _disposing = true;
     // best effort process disposal
     try
     {
         if (_process != null)
         {
             if (!_process.HasExited)
             {
                 _process.Kill();
                 _process.WaitForExit();
             }
             _process.Dispose();
         }
         _processMonitor.Dispose();
     }
     catch (Exception exc)
     {
         _workerProcessLogger?.LogDebug(exc, "Exception on worker disposal.");
         //ignore
     }
 }
示例#9
0
 public void ReleaseResources()
 {
     procMon?.Dispose();
 }
示例#10
0
 public void ReleaseResources()
 {
     watcherToken?.Cancel();
     procMon?.Dispose();
 }
示例#11
0
 private void ReleaseResources()
 {
     procMon?.Dispose();
 }
 public void ReleaseResources()
 {
     fileWatcher?.Dispose();
     procMon?.Dispose();
 }
示例#13
0
 public virtual void Dispose()
 {
     watcherToken?.Cancel();
     procMon?.Dispose();
 }