Skip to content

Commit

Permalink
Merge pull request #140 from ZjzMisaka/Should-not-call-DateTime.ToLoc…
Browse files Browse the repository at this point in the history
…alTime-inner-PTP

[*] Should not call DateTime.ToLocalTime inner PTP
  • Loading branch information
ZjzMisaka authored Mar 9, 2025
2 parents 545423c + c5c9fe8 commit cc711e2
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 22 deletions.
24 changes: 12 additions & 12 deletions PowerThreadPool/Core/PowerThreadPool.Events.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ internal void InvokeWorkEndedEvent(ExecuteResultBase executeResult)
{
executeResult.EndDateTime = DateTime.UtcNow;
Interlocked.Increment(ref _endCount);
Interlocked.Add(ref _executeTime, (long)(executeResult.EndDateTime - executeResult.StartDateTime).TotalMilliseconds);
Interlocked.Add(ref _executeTime, (long)(executeResult.UtcEndDateTime - executeResult.UtcStartDateTime).TotalMilliseconds);
if (WorkEnded != null)
{
WorkEndedEventArgs e = new WorkEndedEventArgs()
Expand All @@ -40,9 +40,9 @@ internal void InvokeWorkEndedEvent(ExecuteResultBase executeResult)
Exception = executeResult.Exception,
Result = executeResult.GetResult(),
Succeed = executeResult.Status == Status.Succeed,
QueueDateTime = executeResult.QueueDateTime,
StartDateTime = executeResult.StartDateTime,
EndDateTime = executeResult.EndDateTime,
QueueDateTime = executeResult.UtcQueueDateTime,
StartDateTime = executeResult.UtcStartDateTime,
EndDateTime = executeResult.UtcEndDateTime,
RetryInfo = executeResult.RetryInfo,
};

Expand All @@ -63,16 +63,16 @@ internal void InvokeWorkStoppedEvent(ExecuteResultBase executeResult)
{
executeResult.EndDateTime = DateTime.UtcNow;
Interlocked.Increment(ref _endCount);
Interlocked.Add(ref _executeTime, (long)(executeResult.EndDateTime - executeResult.StartDateTime).TotalMilliseconds);
Interlocked.Add(ref _executeTime, (long)(executeResult.UtcEndDateTime - executeResult.UtcStartDateTime).TotalMilliseconds);
if (WorkStopped != null)
{
WorkStoppedEventArgs e = new WorkStoppedEventArgs()
{
ID = executeResult.ID,
ForceStop = executeResult.Status == Status.ForceStopped,
QueueDateTime = executeResult.QueueDateTime,
StartDateTime = executeResult.StartDateTime,
EndDateTime = executeResult.EndDateTime,
QueueDateTime = executeResult.UtcQueueDateTime,
StartDateTime = executeResult.UtcStartDateTime,
EndDateTime = executeResult.UtcEndDateTime,
};
SafeInvoke(WorkStopped, e, ErrorFrom.WorkStopped, executeResult);
}
Expand Down Expand Up @@ -113,15 +113,15 @@ internal void InvokeWorkCanceledEvent(ExecuteResultBase executeResult)
{
executeResult.EndDateTime = DateTime.UtcNow;
Interlocked.Increment(ref _endCount);
Interlocked.Add(ref _executeTime, (long)(executeResult.EndDateTime - executeResult.StartDateTime).TotalMilliseconds);
Interlocked.Add(ref _executeTime, (long)(executeResult.UtcEndDateTime - executeResult.UtcStartDateTime).TotalMilliseconds);
if (WorkCanceled != null)
{
WorkCanceledEventArgs e = new WorkCanceledEventArgs()
{
ID = executeResult.ID,
QueueDateTime = executeResult.QueueDateTime,
StartDateTime = executeResult.StartDateTime,
EndDateTime = executeResult.EndDateTime,
QueueDateTime = executeResult.UtcQueueDateTime,
StartDateTime = executeResult.UtcStartDateTime,
EndDateTime = executeResult.UtcEndDateTime,
};
SafeInvoke(WorkCanceled, e, ErrorFrom.WorkCanceled, executeResult);
}
Expand Down
6 changes: 3 additions & 3 deletions PowerThreadPool/EventArguments/ErrorOccurredEventArgs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,9 @@ public ErrorOccurredEventArgs(Exception exception, ErrorFrom errorFrom, ExecuteR
if (executeResult != null)
{
ID = executeResult.ID;
QueueDateTime = executeResult.QueueDateTime;
StartDateTime = executeResult.StartDateTime;
EndDateTime = executeResult.EndDateTime;
QueueDateTime = executeResult.UtcQueueDateTime;
StartDateTime = executeResult.UtcStartDateTime;
EndDateTime = executeResult.UtcEndDateTime;
}
Exception = exception;
ErrorFrom = errorFrom;
Expand Down
27 changes: 21 additions & 6 deletions PowerThreadPool/EventArguments/WorkEventArgsBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,34 @@ public WorkEventArgsBase() { }
/// </summary>
public string ID { get; internal set; }

private DateTime _queueDateTime;
/// <summary>
/// queue datetime.
/// Queue datetime.
/// </summary>
public DateTime QueueDateTime { get; internal set; }
public DateTime QueueDateTime
{
get => _queueDateTime.ToLocalTime();
internal set => _queueDateTime = value;
}

private DateTime _startDateTime;
/// <summary>
/// start datetime.
/// Start datetime.
/// </summary>
public DateTime StartDateTime { get; internal set; }
public DateTime StartDateTime
{
get => _startDateTime.ToLocalTime();
internal set => _startDateTime = value;
}

private DateTime _endDateTime;
/// <summary>
/// callback datetime.
/// End datetime.
/// </summary>
public DateTime EndDateTime { get; internal set; }
public DateTime EndDateTime
{
get => _endDateTime.ToLocalTime();
internal set => _endDateTime = value;
}
}
}
2 changes: 1 addition & 1 deletion PowerThreadPool/Results/ExecuteResult.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ internal override ExecuteResult<TRes> ToTypedResult<TRes>()
Exception = Exception,
Result = (TRes)(object)Result,
ID = ID,
QueueDateTime = QueueDateTime
QueueDateTime = UtcQueueDateTime
};
}
return result;
Expand Down
3 changes: 3 additions & 0 deletions PowerThreadPool/Results/ExecuteResultBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public DateTime QueueDateTime
get => _queueDateTime.ToLocalTime();
internal set => _queueDateTime = value;
}
internal DateTime UtcQueueDateTime => _queueDateTime;

private DateTime _startDateTime;
/// <summary>
Expand All @@ -41,6 +42,7 @@ public DateTime StartDateTime
get => _startDateTime.ToLocalTime();
internal set => _startDateTime = value;
}
internal DateTime UtcStartDateTime => _startDateTime;

private DateTime _endDateTime;
/// <summary>
Expand All @@ -51,6 +53,7 @@ public DateTime EndDateTime
get => _endDateTime.ToLocalTime();
internal set => _endDateTime = value;
}
internal DateTime UtcEndDateTime => _endDateTime;

/// <summary>
/// Retry information.
Expand Down
3 changes: 3 additions & 0 deletions PowerThreadPool/Works/WorkBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ internal bool IsPausing
internal bool ShouldStop { get; set; }
internal bool DependencyFailed { get; set; }
internal ManualResetEvent PauseSignal { get; set; }
/// <summary>
/// Queue datetime (UTC).
/// </summary>
internal DateTime QueueDateTime { get; set; }
internal abstract object Execute();
internal abstract bool Stop(bool forceStop);
Expand Down

0 comments on commit cc711e2

Please # to comment.