コード例 #1
0
        private async Task <IReadOnlyCollection <DeltaComponent> > GetDeltaComponents()
        {
            try
            {
                var components = new List <DeltaComponent>();

                var tempConfFile = Path.GetTempFileName();

                var result = await Task.Run(() => _native.TmcDntGetConfig(_cid, tempConfFile))
                             .ConfigureAwait(false);

                if (!result)
                {
                    return(null);
                }

                var charsToTrim = new[] { ' ', '\t' };
                using (var streamReader = new StreamReader(tempConfFile, Encoding.GetEncoding(1251)))
                {
                    string line;
                    while ((line = await streamReader.ReadLineAsync()
                                   .ConfigureAwait(false)) != null)
                    {
                        var splitedArray = EncodingUtil.Win1251ToUtf8(line).Split(';');


                        var nameAndType = splitedArray[1].Split(',')
                                          .Select(x => x.Trim(charsToTrim))
                                          .ToArray();
                        var traceChainArray = splitedArray[0].Split(',')
                                              .Select(x => Convert.ToUInt32(x.Trim(charsToTrim), 10))
                                              .ToArray();

                        components.Add(new DeltaComponent(nameAndType[1], nameAndType[0], traceChainArray));
                    }
                }

                File.Delete(tempConfFile);
                return(components);
            }
            catch (Exception)
            {
                throw new Exception("Не удалось создать временный файл конфигурации Дельты.");
            }
        }