Esempio n. 1
0
        /// <summary>
        /// Raises a thread start event
        /// </summary>
        /// <param name="thread"></param>
        private void RaiseThreadStart(ThreadManager thread)
        {
            ThreadManagerEventArgs args = new ThreadManagerEventArgs(thread);

            if (ThreadStarting != null)
            {
                ThreadStarting(this, args);
            }

            if (ThreadStarted != null)
            {
                ThreadStarted(null, args);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Raises a thread finish event
        /// </summary>
        /// <param name="thread"></param>
        internal void RaiseThreadFinished(ThreadManager thread)
        {
            ThreadManagerEventArgs args = new ThreadManagerEventArgs(thread);

            if (ThreadFinishing != null)
            {
                ThreadFinishing(this, args);
            }

            if (ThreadStopped != null)
            {
                ThreadStopped(null, args);
            }


            if (thread.Name == "Cache Management Thread" && !thread.Cancelled && thread.UnResponsive)
            {
                Classes.ThreadManager.ThreadStart(_threadCacheManager,
                                                  "Cache Management Thread", ThreadPriority.Lowest);
            }
        }
Esempio n. 3
0
        private void ThreadManager_ThreadForcedToClose(object sender, ThreadManagerEventArgs e)
        {
            Shared.EventLog.Add(String.Format("Thread forced to close: {0}, Unresponsive: {1}, Marked For Removal: {2}",
                                              e.Thread.Name, e.Thread.UnResponsive.ToString(), e.Thread.MarkedForRemoval.ToString()));
            Shared.EventLog.Add(String.Format("Start Time: {0}", e.Thread.TimeStart.ToString("g")));
            Shared.EventLog.Add(String.Format("End Time: {0}", e.Thread.TimeFinish.ToString("g")));

            if (!Program.Closing)
            {
                if (e.Thread.Name == Constants.Service.ThreadLocalDataMonitoring)
                {
                    _serviceDataThread = new LocalServiceDataThread();
                    _serviceDataThread.OnNewServerDetails += ServerDataThread_OnNewServerDetails;

                    _serviceDataThread.MonitorDisks   = _serviceSettings.Find(Constants.Settings.MonitorDisks).GetValue <bool>();
                    _serviceDataThread.MonitorNetwork = _serviceSettings.Find(Constants.Settings.MonitorNetworks).GetValue <bool>();

                    ThreadManager.ThreadStart(_serviceDataThread,
                                              Constants.Service.ThreadLocalDataMonitoring,
                                              System.Threading.ThreadPriority.BelowNormal);
                }
            }
        }
Esempio n. 4
0
 /// <summary>
 /// Event method to remove from list of threads
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 internal static void thread_ThreadFinishing(object sender, ThreadManagerEventArgs e)
 {
     e.Thread._markedForRemoval = true;
     e.Thread.ThreadFinishing  -= thread_ThreadFinishing;
     e.Thread.CancelThread(30000, false);
 }