Dreamine.Threading.Windows
1.0.1
이 패키지는 다른 어셈블리에서 `DMContainer`를 partial class로 확장하지 않습니다. 등록은 별도의 Registration 클래스를 통해 제공합니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
WindowsProcessCpuUsageProvider.cs
이 파일의 문서화 페이지로 가기
1
using
System;
2
using
System.Diagnostics;
3
using
Dreamine.Threading.Interfaces;
4
5
namespace
Dreamine.Threading.Windows.Services
;
6
15
public
sealed
class
WindowsProcessCpuUsageProvider
: ICpuUsageProvider, IDisposable
16
{
25
private
readonly
object
_syncRoot
=
new
();
34
private
readonly Process
_process
;
43
private
TimeSpan
_lastProcessorTime
;
52
private
DateTimeOffset
_lastTimestamp
;
61
private
double
_lastCpuUsage
;
70
private
bool
_disposed
;
71
88
public
WindowsProcessCpuUsageProvider
()
89
{
90
_process
= Process.GetCurrentProcess();
91
_lastProcessorTime
=
_process
.TotalProcessorTime;
92
_lastTimestamp
= DateTimeOffset.Now;
93
}
94
119
public
double
GetTotalCpuUsagePercent
()
120
{
121
lock (
_syncRoot
)
122
{
123
if
(
_disposed
)
124
{
125
return
_lastCpuUsage
;
126
}
127
128
_process
.Refresh();
129
130
var now = DateTimeOffset.Now;
131
var currentProcessorTime =
_process
.TotalProcessorTime;
132
133
var elapsedMs = (now -
_lastTimestamp
).TotalMilliseconds;
134
if
(elapsedMs < 200)
135
{
136
return
_lastCpuUsage
;
137
}
138
139
var cpuTimeMs = (currentProcessorTime -
_lastProcessorTime
).TotalMilliseconds;
140
141
var cpuUsage = cpuTimeMs / (elapsedMs * Environment.ProcessorCount) * 100.0;
142
143
_lastProcessorTime
= currentProcessorTime;
144
_lastTimestamp
= now;
145
_lastCpuUsage
= Math.Clamp(cpuUsage, 0, 100);
146
147
return
_lastCpuUsage
;
148
}
149
}
150
159
public
void
Dispose
()
160
{
161
lock (
_syncRoot
)
162
{
163
if
(
_disposed
)
164
{
165
return
;
166
}
167
168
_disposed
=
true
;
169
170
try
171
{
172
_process
.Dispose();
173
}
174
catch
175
{
176
// Suppress on dispose.
177
}
178
}
179
}
180
}
Dreamine.Threading.Windows.Services
Definition
WindowsCpuInfoProvider.cs:3
Dreamine.Threading.Windows.Services.WindowsProcessCpuUsageProvider.Dispose
void Dispose()
Definition
WindowsProcessCpuUsageProvider.cs:159
Dreamine.Threading.Windows.Services.WindowsProcessCpuUsageProvider._process
readonly Process _process
Definition
WindowsProcessCpuUsageProvider.cs:34
Dreamine.Threading.Windows.Services.WindowsProcessCpuUsageProvider.GetTotalCpuUsagePercent
double GetTotalCpuUsagePercent()
Definition
WindowsProcessCpuUsageProvider.cs:119
Dreamine.Threading.Windows.Services.WindowsProcessCpuUsageProvider._lastTimestamp
DateTimeOffset _lastTimestamp
Definition
WindowsProcessCpuUsageProvider.cs:52
Dreamine.Threading.Windows.Services.WindowsProcessCpuUsageProvider._lastCpuUsage
double _lastCpuUsage
Definition
WindowsProcessCpuUsageProvider.cs:61
Dreamine.Threading.Windows.Services.WindowsProcessCpuUsageProvider._disposed
bool _disposed
Definition
WindowsProcessCpuUsageProvider.cs:70
Dreamine.Threading.Windows.Services.WindowsProcessCpuUsageProvider._syncRoot
readonly object _syncRoot
Definition
WindowsProcessCpuUsageProvider.cs:25
Dreamine.Threading.Windows.Services.WindowsProcessCpuUsageProvider.WindowsProcessCpuUsageProvider
WindowsProcessCpuUsageProvider()
Definition
WindowsProcessCpuUsageProvider.cs:88
Dreamine.Threading.Windows.Services.WindowsProcessCpuUsageProvider._lastProcessorTime
TimeSpan _lastProcessorTime
Definition
WindowsProcessCpuUsageProvider.cs:43
Services
WindowsProcessCpuUsageProvider.cs
다음에 의해 생성됨 :
1.17.0