/// <summary> /// Tries to query measured process times. /// </summary> /// <param name="ptr">Process handle.</param> /// <param name="processTimes">Measured process times.</param> /// <returns>True if received the process times.</returns> internal static bool TryGetProcessTimes(IntPtr ptr, out ProcessTimes processTimes) { processTimes = new ProcessTimes(); System.Runtime.InteropServices.ComTypes.FILETIME lpCreationTime, lpExitTime, lpKernel, lpUser; bool result = GetProcessTimes(ptr, out lpCreationTime, out lpExitTime, out lpKernel, out lpUser); if (!result) { Console.Error.WriteLine("Unable to query process time."); return(false); } DateTime creation = DateTime.FromFileTime(ComFileTimeToTicks(lpCreationTime)); DateTime exit = DateTime.FromFileTime(ComFileTimeToTicks(lpExitTime)); processTimes = new ProcessTimes(PreciseTimeSpan.FromTicks((exit - creation).Ticks), PreciseTimeSpan.FromTicks(ComFileTimeToTicks(lpUser)), PreciseTimeSpan.FromTicks(ComFileTimeToTicks(lpKernel))); return(true); }
public AcquireTask(FixedChannelPool pool, TaskCompletionSource <IChannel> promise) { this.pool = pool; this.Promise = promise; this.ExpireTime = PreciseTimeSpan.FromTicks(Stopwatch.GetTimestamp()) + pool.acquireTimeout; }
public void Run() { Contract.Assert(this.pool.executor.InEventLoop); while (true) { if (!this.pool.pendingAcquireQueue.TryPeek(out AcquireTask task) || PreciseTimeSpan.FromTicks(Stopwatch.GetTimestamp()) < task.ExpireTime) { break; } this.pool.pendingAcquireQueue.TryDequeue(out _); --this.pool.pendingAcquireCount; this.onTimeout(task); } }
internal ProcessTimes(long wallTimeTicks, long userTimeTicks, long kernelTimeTicks) { WallTime = PreciseTimeSpan.FromTicks(wallTimeTicks); UserTime = PreciseTimeSpan.FromTicks(userTimeTicks); KernelTime = PreciseTimeSpan.FromTicks(kernelTimeTicks); }