- Code: Select all
System.InvalidOperationException was unhandled by user code
HResult=-2146233079
Message=Collection was modified; enumeration operation may not execute.
Source=mscorlib
StackTrace:
at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
at System.Collections.Generic.List`1.Enumerator.MoveNext()
at CitaviMike.CitaviMikeAddon.MergeEvaluationAndNotesFields() in CitaviMikeAddon.cs:line 237
at CitaviMike.CitaviMikeAddon.OnBeforePerformingCommand(BeforePerformingCommandEventArgs e) in CitaviMikeAddon.cs:line 291
at SwissAcademic.Citavi.Shell.ProjectShellForm.OnBeforePerformingCommand(BeforePerformingCommandEventArgs e)
InnerException:
Wie kann ich die project.References Collection aktualisieren?
Codebeispiel (die Exception wird nach
logMessage("---------------- New Notes --------------------");
foreach (Reference citaviReference in project.References)
geworfen):
- Code: Select all
private void MergeEvaluationAndNotesFields()
{
// required for Citavi2 to Citavi4 migration
bool simulation = false;
logMessage("MergeEvaluationAndNotesFields: simulation="+simulation.ToString());
ProjectShell projectShell = Program.ActiveProjectShell;
Project project = projectShell.Project;
logMessage("Project includes " + project.References.Count + " references.");
logMessage("---------------- Merged Notes --------------------");
foreach (Reference citaviReference in project.References)
{
string evaluationText = citaviReference.Evaluation;
if (!string.IsNullOrEmpty(evaluationText))
{
string notesText=citaviReference.Notes;
if (!string.IsNullOrEmpty(notesText))
{
evaluationText += "\n" + notesText;
logMessage("Reference #" + citaviReference.SequenceNumber + " Merged Notes: "+evaluationText);
if (!simulation)
{
citaviReference.Notes = evaluationText;
citaviReference.Evaluation = string.Empty;
}
}
}
}
if (!simulation)
{
project.Save();
}
logMessage("---------------- New Notes --------------------");
foreach (Reference citaviReference in project.References)
{
string evaluationText = citaviReference.Evaluation;
if (!string.IsNullOrEmpty(evaluationText))
{
string notesText=citaviReference.Notes;
if (string.IsNullOrEmpty(notesText))
{
logMessage("Reference #" + citaviReference.SequenceNumber + " New Notes: "+evaluationText);
if (!simulation)
{
citaviReference.Notes = evaluationText;
citaviReference.Evaluation = string.Empty;
}
}
}
}
if (!simulation)
{
project.Save();
}
logMessage("Finished MergeEvaluationAndNotesFields");
}