示例#1
0
        public void Shutdown()
        {
            StopScanning();

            if (_service != null)
            {
                _service.Dispose();
                _service = null;
            }

            if (_peripheral != null)
            {
                _peripheral.Dispose();
                _peripheral = null;
            }

            if (_centralManager != null)
            {
                _centralManager.Dispose();
                _centralManager = null;
            }

            if (_dispatchQueue != null)
            {
                _dispatchQueue.Dispose();
                _dispatchQueue = null;
            }
        }
示例#2
0
        public async Task ShouldCreateADispatchQueueAndEnqueueMessagesThenDispose(int batchSize, int queueMaxSize, int messageCount, int messageConsumptionWait)
        {
            var messages = new List <IEvent>();

            var dispatchQueueConfiguration = new DispatchQueueConfiguration(
                async(m) =>
            {
                messages.Add(m);
                await Task.Delay(messageConsumptionWait + 5);
            },
                batchSize,
                queueMaxSize
                );

            var dispatchQueue = new DispatchQueue("void", dispatchQueueConfiguration, new DummyLoggerFactory());

            Assert.True(dispatchQueue.CanEnqueue());

            await Task.Delay(100);

            for (var i = 0; i < messageCount; i++)
            {
                dispatchQueue.Enqueue(new TestMessage(i));
            }

            await Task.Delay(messageConsumptionWait *batchSize);

            Assert.AreEqual(batchSize, messages.Count);

            dispatchQueue.Dispose();

            Assert.IsFalse(dispatchQueue.CanEnqueue());

            Assert.AreEqual(messageCount, messages.Count);
        }
示例#3
0
        void UserKnocked()
        {
            _state.didKnock = true;
            if (_state.CountDown > 0 && _state.CountDown < 5 && _state.PublishToTwitter == false)
            {
                _state.PublishToTwitter = true;
                session.StopRunning();
                session.Dispose();
                session = null;
                outputRecorder.Dispose();
                outputRecorder = null;
                queue.Dispose();
                queue = null;

                //Stop Both Timers
                AudioLoop.Invalidate();
                timer.Invalidate();

                //Stop Recording
                StopRecording();



                //Start up Resording
                NSTimer.CreateScheduledTimer(TimeSpan.FromSeconds(10), AudioReset);
                NSTimer.CreateScheduledTimer(TimeSpan.FromSeconds(1), PostToTwitter);
                _state.PublishToTwitter = true;
                _state.TopLabel.Text    = "";
                _state.BottomLabel.Text = "Posted to Twitter!";
                imgYouRock.Hidden       = false;
            }
        }
        /// <summary>
        /// Stops the and tears down the capture session.
        /// </summary>
        public void StopAndTearDownCaptureSession()
        {
            if (captureSession != null)
            {
                if (captureSession.Running)
                {
                    captureSession.StopRunning();
                }

                NSNotificationCenter.DefaultCenter.RemoveObserver(this, AVCaptureSession.DidStopRunningNotification, captureSession);

                captureSession.Dispose();
                captureSession = null;
            }

            if (previewBufferQueue != null)
            {
                previewBufferQueue.Dispose();
                previewBufferQueue = null;
            }

            if (movieWritingQueue != null)
            {
                movieWritingQueue.Dispose();
                movieWritingQueue = null;
            }
        }
示例#5
0
 public void TearDown()
 {
     if (listener != null)
     {
         listener.Dispose();
     }
     if (queue != null)
     {
         queue.Dispose();
     }
     listener = null;
     queue    = null;
 }
示例#6
0
        public void ShouldTryToEnqueueAndFail()
        {
            var dispatchQueueConfiguration = new DispatchQueueConfiguration(
                async(m) =>
            {
                await Task.Delay(10);
            },
                10,
                10
                );

            var dispatchQueue = new DispatchQueue("void", dispatchQueueConfiguration, new DummyLoggerFactory());

            dispatchQueue.Dispose();

            Assert.IsFalse(dispatchQueue.CanEnqueue());

            Assert.Throws <InvalidOperationException>(() => dispatchQueue.Enqueue(new TestMessage(1)));
        }