private async Task ReadTaskAsync()
        {
            do
            {
                var numberOfBytes = (uint)_buffer.Length;

                try
                {
                    var bytesRead = await _serialPortStream.LoadAsync(numberOfBytes);

                    if (bytesRead > 0)
                    {
                        _serialPortStream.ReadBytes(_buffer);

                        var messages = OscPacket.GetPackets(_buffer, (int)bytesRead);

                        foreach (var message in messages)
                        {
                            OscPacketReceived?.Invoke(this, new OscEventArgs(message));
                        }
                    }
                }
                catch
                {
                    await Task.Delay(1000);

                    // do not care
                }
            }while (true);
        }
        private void SocketMessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
        {
            using (var reader = args.GetDataReader())
            {
                var data = new byte[reader.UnconsumedBufferLength];

                reader.ReadBytes(data);

                try
                {
                    var packet = OscPacket.GetPacket(data);

                    if (packet != null)
                    {
                        OscPacketReceived?.Invoke(this, new OscEventArgs(packet));
                    }
                }
                catch (Exception)
                {
                    //  do not care
                }
            }
        }