private async Task Callback(object state) { foreach (var profiler in _gcProfilers) { await profiler.Invoke(ApplicationGCProfilingContext.GetSnapshot()); } foreach (var profiler in _threadingprofilers) { await profiler.Invoke(ApplicationThreadingProfilingContext.GetSnapshot()); } }
public static ApplicationThreadingProfilingContext GetSnapshot() { ThreadPool.GetAvailableThreads(out var availableWorkerThreads, out var availableCompletionPortThreads); ThreadPool.GetMaxThreads(out var maxWorkerThreads, out var maxCompletionPortThreads); ThreadPool.GetMinThreads(out var minWorkerThreads, out var minCompletionPortThreads); var context = new ApplicationThreadingProfilingContext { AvailableCompletionPortThreads = availableCompletionPortThreads, AvailableWorkerThreads = availableWorkerThreads, MaxCompletionPortThreads = maxCompletionPortThreads, MaxWorkerThreads = maxWorkerThreads, MinCompletionPortThreads = minCompletionPortThreads, MinWorkerThreads = minWorkerThreads, }; return(context); }