Index: Core/Common/src/Core.Common.Base/Service/Activity.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -rd24dba0f0c60fe14353ac3c5622e12a9d5bd758d --- Core/Common/src/Core.Common.Base/Service/Activity.cs (.../Activity.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/src/Core.Common.Base/Service/Activity.cs (.../Activity.cs) (revision d24dba0f0c60fe14353ac3c5622e12a9d5bd758d) @@ -122,6 +122,11 @@ /// public void Finish() { + if (State == ActivityState.None) + { + return; + } + ChangeState(OnFinish, State == ActivityState.Executed ? ActivityState.Finished : State); // If relevant, preserve the previous state if (State == ActivityState.Finished) Index: Core/Common/src/Core.Common.Gui/Forms/ProgressDialog/ActivityProgressDialog.cs =================================================================== diff -u -r0be4ede909cda20598ffd400f452e08c99089bcb -rd24dba0f0c60fe14353ac3c5622e12a9d5bd758d --- Core/Common/src/Core.Common.Gui/Forms/ProgressDialog/ActivityProgressDialog.cs (.../ActivityProgressDialog.cs) (revision 0be4ede909cda20598ffd400f452e08c99089bcb) +++ Core/Common/src/Core.Common.Gui/Forms/ProgressDialog/ActivityProgressDialog.cs (.../ActivityProgressDialog.cs) (revision d24dba0f0c60fe14353ac3c5622e12a9d5bd758d) @@ -157,8 +157,6 @@ private void RunActivity(int stepNumberForProgressNotification, int activityCount) { - runningActivity.LogMessages.Clear(); - if (InvokeRequired) { UpdateActivityStepControlsDelegate updateDelegate = UpdateProgressControls; @@ -171,6 +169,8 @@ try { + runningActivity.LogMessages.Clear(); + if (RenderedMessageLogAppender.Instance != null) { RenderedMessageLogAppender.Instance.AppendMessageLineAction = message => runningActivity.LogMessages.Add(message); Index: Core/Common/test/Core.Common.Base.Test/Service/ActivityTest.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -rd24dba0f0c60fe14353ac3c5622e12a9d5bd758d --- Core/Common/test/Core.Common.Base.Test/Service/ActivityTest.cs (.../ActivityTest.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/test/Core.Common.Base.Test/Service/ActivityTest.cs (.../ActivityTest.cs) (revision d24dba0f0c60fe14353ac3c5622e12a9d5bd758d) @@ -204,10 +204,10 @@ } [Test] - public void Finish_SkippedActivityWithcSuccessfulFinish_MessageIsSendToLogAndPreviousStateIsPreserved() + public void Finish_SkippedActivityWithSuccessfulFinish_MessageIsSendToLogAndPreviousStateIsPreserved() { // Setup - var activity = new SimpleActivity(false, false, false, true); + var activity = new SimpleActivity(false, false, false, ActivityState.Skipped); activity.Run(); @@ -223,19 +223,30 @@ Assert.AreEqual(ActivityState.Skipped, activity.State); } + [Test] + public void Finish_NoneActivityWithSuccessfulFinish_NoMessageIsSendToLogAndPreviousStateIsPreserved() + { + // Setup + var activity = new SimpleActivity(false, false, false, ActivityState.None); + + // Call / Assert + TestHelper.AssertLogMessagesCount(() => activity.Finish(), 0); + Assert.AreEqual(ActivityState.None, activity.State); + } + private class SimpleActivity : Activity { private readonly bool throwOnRun; private readonly bool throwOnCancel; private readonly bool throwOnFinish; - private readonly bool skipped; + private readonly ActivityState? specialStateAfterRun; - public SimpleActivity(bool throwOnRun, bool throwOnCancel, bool throwOnFinish, bool skipped = false) + public SimpleActivity(bool throwOnRun, bool throwOnCancel, bool throwOnFinish, ActivityState? specialStateAfterRun = null) { this.throwOnRun = throwOnRun; this.throwOnCancel = throwOnCancel; this.throwOnFinish = throwOnFinish; - this.skipped = skipped; + this.specialStateAfterRun = specialStateAfterRun; } public void SetProgressText(string progressText) @@ -245,9 +256,9 @@ protected override void OnRun() { - if (skipped) + if (specialStateAfterRun != null) { - State = ActivityState.Skipped; + State = (ActivityState) specialStateAfterRun; return; }