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("Не удалось создать временный файл конфигурации Дельты."); } }