Start() 개인적인 메소드

private Start ( ) : void
리턴 void
예제 #1
0
 /// <summary>
 /// Creates a new instance of the <see cref="SharedTimerScheduler"/> class.
 /// </summary>
 public SharedTimerScheduler()
 {
     m_syncRoot              = new object();
     m_log                   = Logger.CreatePublisher(typeof(SharedTimerScheduler), MessageClass.Component);
     m_schedulesByInterval   = new Dictionary <int, SharedTimerInstance>();
     m_reportStatus          = new ScheduledTask();
     m_reportStatus.Running += ReportStatus;
     m_reportStatus.Start(60 * 1000);
 }
예제 #2
0
 public void TestMethod1()
 {
     m_task = new ScheduledTask(ThreadingMode.DedicatedBackground,ThreadPriority.Highest);
     m_task.Running += task_Running;
     m_task.Start(10);
     Thread.Sleep(1000);
     m_task.Dispose();
     System.Console.WriteLine("Disposed");
 }
예제 #3
0
        private void RestartTimer()
        {
            long current        = DateTime.UtcNow.Ticks;
            long subtractOffset = current - m_dayOffset.Ticks;
            long remainderTicks = m_period.Ticks - subtractOffset % m_period.Ticks;
            int  delay          = (int)(remainderTicks / TimeSpan.TicksPerMillisecond) + 1;

            if (delay < 10)
            {
                delay += (int)m_period.TotalMilliseconds;
            }

            m_timer.Start(delay);
        }
예제 #4
0
        private void ReportStatus(object sender, EventArgs <ScheduledTaskRunningReason> e)
        {
            m_reportStatus.Start(60 * 1000);

            StringBuilder status = new StringBuilder();

            bool warning = false;
            bool error   = false;

            lock (m_syncRoot)
            {
                status.AppendLine("Shared Timer Factory Status");

                foreach (KeyValuePair <int, SharedTimerInstance> item in m_schedulesByInterval)
                {
                    status.AppendLine(item.Value.StatusMessage(ref warning, ref error));
                    item.Value.ResetStats();
                }
            }

            m_log.Publish(error ? MessageLevel.Error : warning ? MessageLevel.Warning : MessageLevel.Info, MessageFlags.SystemHealth, "SharedTimerScheduler Status", status.ToString());
        }
        void Test(ThreadingMode mode)
        {
            const int Count = 1000000000;
            Stopwatch sw = new Stopwatch();
            m_doWorkCount = 0;
            using (ScheduledTask work = new ScheduledTask(mode))
            {
                work.Running += work_DoWork;

                sw.Start();
                for (int x = 0; x < 1000; x++)
                    work.Start();

                sw.Stop();
            }
            m_doWorkCount = 0;
            sw.Reset();

            using (ScheduledTask work = new ScheduledTask(mode))
            {
                work.Running += work_DoWork;

                sw.Start();
                for (int x = 0; x < Count; x++)
                    work.Start();

                sw.Stop();
            }

            Console.WriteLine(mode.ToString());
            Console.WriteLine(" Fire Event Count: " + m_doWorkCount.ToString());
            Console.WriteLine("  Fire Event Rate: " + (m_doWorkCount / sw.Elapsed.TotalSeconds / 1000000).ToString("0.00"));
            Console.WriteLine(" Total Calls Time: " + sw.Elapsed.TotalMilliseconds.ToString("0.0") + "ms");
            Console.WriteLine(" Total Calls Rate: " + (Count / sw.Elapsed.TotalSeconds / 1000000).ToString("0.00"));
            Console.WriteLine();
        }
        void TestConcurrent(ThreadingMode mode)
        {
            int workCount;

            const int Count = 100000000;
            Stopwatch sw = new Stopwatch();
            m_doWorkCount = 0;
            using (ScheduledTask work = new ScheduledTask(mode))
            {
                work.Running += work_DoWork;

                sw.Start();
                for (int x = 0; x < 1000; x++)
                    work.Start();

                sw.Stop();
            }
            m_doWorkCount = 0;
            sw.Reset();

            using (ScheduledTask work = new ScheduledTask(mode))
            {
                work.Running += work_DoWork;


                sw.Start();
                ThreadPool.QueueUserWorkItem(BlastStartMethod, work);
                ThreadPool.QueueUserWorkItem(BlastStartMethod, work);

                for (int x = 0; x < Count; x++)
                    work.Start();
                workCount = m_doWorkCount;
                sw.Stop();
                Thread.Sleep(100);
            }

            Console.WriteLine(mode.ToString());
            Console.WriteLine(" Fire Event Count: " + workCount.ToString());
            Console.WriteLine("  Fire Event Rate: " + (workCount / sw.Elapsed.TotalSeconds / 1000000).ToString("0.00"));
            Console.WriteLine(" Total Calls Time: " + sw.Elapsed.TotalMilliseconds.ToString("0.0") + "ms");
            Console.WriteLine(" Total Calls Rate: " + (Count / sw.Elapsed.TotalSeconds / 1000000).ToString("0.00"));
            Console.WriteLine();
        }
 /// <summary>
 /// Creates a new instance of the <see cref="SharedTimerScheduler"/> class.
 /// </summary>
 public SharedTimerScheduler()
 {
     m_syncRoot = new object();
     m_log = Logger.CreatePublisher(typeof(SharedTimerScheduler), MessageClass.Component);
     m_schedulesByInterval = new Dictionary<int, SharedTimerInstance>();
     m_reportStatus = new ScheduledTask();
     m_reportStatus.Running += ReportStatus;
     m_reportStatus.Start(60 * 1000);
 }
예제 #8
0
 /// <summary>
 /// Immediately executes the timer, not waiting for the elapsed interval.
 /// </summary>
 public void RunNow()
 {
     m_timer.Start();
 }
예제 #9
0
 /// <summary>
 /// Executes the action on a separate thread.
 /// </summary>
 protected override void ExecuteActionAsync()
 {
     m_task.Start();
 }
        /// <summary>
        /// Creates a <see cref="RouteMappingHighLatencyLowCpu"/>
        /// </summary>
        public RouteMappingHighLatencyLowCpu()
        {
            m_lastStatusUpdate = ShortTime.Now;
            m_maxPendingMeasurements = 1000;
            m_routeLatency = OptimizationOptions.RoutingLatency;
            m_batchSize = OptimizationOptions.RoutingBatchSize;
            m_inboundQueue = new ConcurrentQueue<List<IMeasurement>>();

            m_task = new ScheduledTask(ThreadingMode.DedicatedBackground, ThreadPriority.AboveNormal);
            m_task.Running += m_task_Running;
            m_task.UnhandledException += m_task_UnhandledException;
            m_task.Disposing += m_task_Disposing;
            m_task.Start(m_routeLatency);

            m_onStatusMessage = x => { };
            m_onProcessException = x => { };
            m_globalCache = new GlobalCache(new Dictionary<IAdapter, Consumer>(), 0);
            RouteCount = m_globalCache.GlobalSignalLookup.Count(x => x != null);
        }