public InMemoryDelayedJob(InMemoryDelayedJobProcessor parent, Envelope envelope, DateTimeOffset executionTime) { _parent = parent; ExecutionTime = executionTime.ToUniversalTime(); envelope.ExecutionTime = null; Envelope = envelope; _cancellation = new CancellationTokenSource(); var delayTime = ExecutionTime.Subtract(DateTime.UtcNow); _task = Task.Delay(delayTime, _cancellation.Token).ContinueWith(publish); ReceivedAt = DateTime.UtcNow; }