コード例 #1
0
ファイル: AsyncPoller.cs プロジェクト: lanicon/BeeHive
        /// <summary>
        /// Note: RunAsync and Start ping-pong between each other.
        /// </summary>
        /// <returns></returns>

        private async Task RunAsync()
        {
            bool result = false;

            try
            {
                _cancellationTokenSource = new CancellationTokenSource();
                result = await _work(_cancellationTokenSource.Token);
            }
            catch (Exception exception)
            {
                TheTrace.TraceWarning(exception.ToString());
            }

            if (result)
            {
                _interval.Reset();
            }
            else
            {
                await Task.Delay(_interval.Next());
            }

            if (_isWorking)
            {
                Start();
            }
        }
コード例 #2
0
ファイル: Poller.cs プロジェクト: naeemkhedarun/BeeHive
        private void Run()
        {
            while (true)
            {
                if (!_isWorking)
                {
                    break;
                }

                if (_work.WrapException(true))
                {
                    _interval.Reset();
                }
                else
                {
                    Thread.Sleep(_interval.Next());
                }
            }
        }
コード例 #3
0
        private void Run()
        {
            while (true)
            {
                if (!_isWorking)
                {
                    break;
                }

                if (_work.WrapException(true))
                {
                    _interval.Reset();
                }
                else
                {
                    _resetEvent.WaitOne(_interval.Next());
                }
            }
        }