Chimney.MPD.Net.Connection.Recive C# (CSharp) Метод

Recive() публичный статический Метод

public static Recive ( StreamSocket streamSocket, List orstarts, List orends, List andstarts, List andends ) : Task
streamSocket Windows.Networking.Sockets.StreamSocket
orstarts List
orends List
andstarts List
andends List
Результат Task
        public static async Task<string> Recive(StreamSocket streamSocket, List<string> orstarts, List<string> orends, List<string> andstarts, List<string> andends)
        {
            string returnString = string.Empty;

            try
            {
                using (var dataReader = new DataReader(streamSocket.InputStream))
                {
                    dataReader.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8;
                    dataReader.InputStreamOptions = InputStreamOptions.Partial;

                    var end = false;

                    while (!end && await dataReader.LoadAsync(64000) != 0)
                    {
                        string readString;
                        var buffer = dataReader.ReadBuffer(dataReader.UnconsumedBufferLength);
                        using (var dr = DataReader.FromBuffer(buffer))
                        {
                            var bytes1251 = new Byte[buffer.Length];
                            dr.ReadBytes(bytes1251);

                            readString = Encoding.GetEncoding("UTF-8").GetString(bytes1251, 0, bytes1251.Length);
                        }

                        if (!string.IsNullOrEmpty(readString))
                            returnString += readString;

                        if (readString == null)
                        {
                            end = true;
                        }
                        else if (orstarts.FirstOrDefault(o => returnString.StartsWith(o)) != null)
                        {
                            end = true;
                        }
                        else if (orends.FirstOrDefault(o => returnString.EndsWith(o)) != null)
                        {
                            end = true;
                        }
                        else if (andstarts.FirstOrDefault(o => returnString.StartsWith(o)) != null
                                && andends.FirstOrDefault(o => returnString.EndsWith(o)) != null)
                        {
                            end = true;
                        }
                    }

                    dataReader.DetachStream();
                }
            }
            catch(Exception ex)
            {
                Debug.WriteLine(ex.Message);
                returnString = string.Empty;
            }

            return returnString;
        }