Exemplo n.º 1
0
        private void _04_EnqueueData(_04_args arg)
        {
            try
            {
                // Local 'data' or its members cannot have their address taken and be used inside an anonymous
                // method or lambda expression - Error when trying to enqueue a struct
                arg.mQueue.Put(arg.dData);

                StringBuilder numbers = new StringBuilder();

                for (int i = 0; i < arg.dData.NumbersLength; i++)
                {
                    unsafe
                    {
                        numbers.Append(arg.dData.Numbers[i] + ", ");
                    }
                }

                char[] txt = new char[arg.dData.TextLength];
                for (int i = 0; i < arg.dData.TextLength; i++)
                {
                    unsafe { txt[i] = arg.dData.Text[i]; }
                }
                string text = new String(txt);

                Console.WriteLine("_04_testTakeIsUnblockedWhenElementAdded() - data items enqueued \n'{0}', \n'{1}', \n'{2}', \n'{3}'",
                    arg.dData.Value, arg.dData.Letter, numbers, text);
            }
            catch (Exception unexpected)
            {
                Console.Write(unexpected);
                throw;
            }
        }
Exemplo n.º 2
0
        private void _04_DequeueData(_04_args arg)
        {
            try
                {
                    _04_MMData unused = arg.mQueue.Take<_04_MMData>();
                    StringBuilder numbers = new StringBuilder();
                    String text;
                    for (int i = 0; i < unused.NumbersLength; i++)
                    {
                        unsafe
                        {
                            numbers.Append(unused.Numbers[i] + ", ");
                        }
                    }

                    char[] txt = new char[unused.TextLength];
                    for (int i = 0; i < unused.TextLength; i++)
                    {
                        unsafe { txt[i] = unused.Text[i]; }
                    }
                    text = new String(txt);

                    Console.WriteLine("_04_testTakeIsUnblockedWhenElementAdded() = data item dequeued = \n'{0}', \n'{1}', \n'{2}', \n'{3}'",
                        unused.Value, unused.Letter, numbers, text);
                }
                catch (Exception unexpected)
                {
                    Console.Write(unexpected);
                    throw;
                }
        }