Exemplo n.º 1
0
        public void Initialize()
        {
            ThreadPool.QueueUserWorkItem(state =>
            {
                while (true)
                {
                    QRCodeDecoder decoder = new QRCodeDecoder();
                    Frame frame           = _frameSource.Pick();
                    if (frame == null)
                    {
                        continue;
                    }
                    byte[] decodeBytes = null;
                    try
                    {
                        decodeBytes = decoder.DecodeBytes(new QRCodeBitmapImage(frame.RawData)).Select(s => (byte)s).ToArray();
                    }
                    catch (Exception e)
                    {
                        continue;
                    }
                    var index     = BitConverter.ToInt32(decodeBytes, 0);
                    frame.Content = decodeBytes.Skip(sizeof(int)).ToArray();

                    _frames.TryAdd(index, frame);
                    TryFinalize();

                    Thread.Sleep(100);
                }
            });
        }