async void _btnAnalysis_OnClick(object sender, RoutedEventArgs args) { if (!DataIsLoaded) { return; } await BlockInputAction(() => { try { _analysisDone = false; _oldXmlDocDict.Clear(); Log("---------------- Анализ входных данных:\n{0}\n{1}\n{2}\n----------------", _resourcesFile, _csvDocFile, _solutionFile); var allFound = true; foreach (var kv in _newXmlDocDict) { var symbolId = kv.Key; var newXmlDoc = kv.Value; if (!newXmlDoc.CheckResources(_resourcesDict)) { continue; } var oldXmlDoc = _solution.GetXmlDocForSymbol(symbolId); if (oldXmlDoc == null) { allFound = false; continue; } if (!CodeXmlDoc.IsDocStructureTheSame(oldXmlDoc, newXmlDoc)) { Log("ERROR: Структура документации в существующем коде и во входном файле не совпадают для символа {0}", symbolId); continue; } _oldXmlDocDict[symbolId] = oldXmlDoc; } Log("------------------------------------------------------------------------"); _analysisDone = _newXmlDocDict.Count > 0 && _oldXmlDocDict.Count > 0; Log("Анализ завершен. " + (_analysisDone ? "Можно выполнять замену в коде." : "Нет ни одного символа для замены документации.")); var skipSymbols = _newXmlDocDict.Keys.Except(_oldXmlDocDict.Keys).ToArray(); if (skipSymbols.Length > 0) { Log("Следующие символы проигнорированы:\n{0}", string.Join("\n", skipSymbols)); } } catch (Exception e) { ErrorMsg("Ошибка во время анализа: " + e); } return(Task.FromResult(0)); }); }