<% Dim LockObj As New Object Public Sub PhaseChangedHandler(ByVal sender As Object, ByVal e As EventArguments.PhaseChangedEventArgs) SyncLock LockObj Select Case DirectCast(e, EventArguments.PhaseChangedEventArgs).Phase Case DilemmaManager.Phase.PhaseX TransColors(PrgMain.ForeColor, Color.DodgerBlue, PrgStatus) Case DilemmaManager.Phase.Y, DilemmaManager.Phase.Z TransColors(PrgMain.ForeColor, Color.DeepSkyBlue, PrgStatus) Case DilemmaManager.Phase.D TransColors(PrgMain.ForeColor, Color.DeepPink, PrgStatus) End Select End SyncLock End Sub ''' ''' Apply transition effect to progress bar color. ''' ''' Color of the starting. ''' Color of the ending. ''' The progress bar. Private Sub TransColors(ByVal startingColor As Color, ByVal endingColor As Color, ByVal progressBar As ToolStripProgressBar) Dim R As Integer = startingColor.R Dim B As Integer = startingColor.B Dim G As Integer = startingColor.G While Not (R = endingColor.R AndAlso B = endingColor.B AndAlso G = endingColor.G) R = StepCloser(R, endingColor.R) B = StepCloser(B, endingColor.B) G = StepCloser(G, endingColor.G) ChangeColor(Color.FromArgb(R, G, B), PrgStatus) Threading.Thread.Sleep(1) End While End Sub Const StepSpeed As Integer = 1 ''' ''' One step increase or decrease first number to target number. ''' ''' The first number. ''' The target number. ''' New value of first number Private Function StepCloser(ByVal firstNumber As Integer, ByVal targetNumber As Integer) As Integer If firstNumber < targetNumber Then firstNumber += StepSpeed If firstNumber > targetNumber Then firstNumber = targetNumber ElseIf firstNumber > targetNumber Then firstNumber -= StepSpeed If firstNumber < targetNumber Then firstNumber = targetNumber End If Return firstNumber End Function Private Delegate Sub DelegateChangeColor(ByVal Color As Color, ByVal progressBar As ToolStripProgressBar) ''' ''' Changes the progressbar color. ''' ''' The color. ''' The progress bar. Private Sub ChangeColor(ByVal color As Color, ByVal progressBar As ToolStripProgressBar) If InvokeRequired Then Invoke(New DelegateChangeColor(AddressOf ChangeColor), color, progressBar) Else progressBar.ForeColor = color End If End Sub %>