Một cách là để lấy giá trị của performance counters ".NET CLR Networking/Bytes nhận" và " .NET CLR Networking/Bytes Sent" cho ứng dụng của bạn:
PerformanceCounter bytesSentPerformanceCounter= new PerformanceCounter();
bytesSentPerformanceCounter.CategoryName = ".NET CLR Networking";
bytesSentPerformanceCounter.CounterName = "Bytes Sent";
bytesSentPerformanceCounter.InstanceName = GetInstanceName();
bytesSentPerformanceCounter.ReadOnly = true;
float bytesSent = bytesSentPerformanceCounter.NextValue();
//....
private static string GetInstanceName()
{
// Used Reflector to find the correct formatting:
string assemblyName = GetAssemblyName();
if ((assemblyName == null) || (assemblyName.Length == 0))
{
assemblyName = AppDomain.CurrentDomain.FriendlyName;
}
StringBuilder builder = new StringBuilder(assemblyName);
for (int i = 0; i < builder.Length; i++)
{
switch (builder[i])
{
case '/':
case '\\':
case '#':
builder[i] = '_';
break;
case '(':
builder[i] = '[';
break;
case ')':
builder[i] = ']';
break;
}
}
return string.Format(CultureInfo.CurrentCulture,
"{0}[{1}]",
builder.ToString(),
Process.GetCurrentProcess().Id);
}
private static string GetAssemblyName()
{
string str = null;
Assembly entryAssembly = Assembly.GetEntryAssembly();
if (entryAssembly != null)
{
AssemblyName name = entryAssembly.GetName();
if (name != null)
{
str = name.Name;
}
}
return str;
}
Lưu ý rằng hiệu suất-quầykhông được tạo ra cho đến khi lần đầu tiên bạn sử dụng các thư viện mạng có liên quan (bạn sẽ nhận được InvalidOperation: Instance 'XXX' không tồn tại tôi n Danh mục được chỉ định) và bạn cần phải chèn
<configuration>
<system.net>
<settings>
<performanceCounters enabled="true" />
</settings>
</system.net>
</configuration>
trong app.config của bạn.
Để tải xuống mẫu đầy đủ NetworkTraffic.cs và NetworkTraffic.exe.config.
Nguồn
2009-01-14 09:58:15
Mã này dường như không hoạt động nữa và cung cấp 'nvalidOperation: Instance 'XXX' không tồn tại trong lỗi Category' được chỉ định mỗi lần. – TheGateKeeper
Tôi đang sử dụng windows 7 và .net 4.0 – TheGateKeeper
"Lưu ý rằng các bộ đếm hiệu suất không được tạo cho đến khi lần đầu tiên bạn sử dụng các thư viện mạng có liên quan", điều này sẽ được in đậm:). Tôi đã dành rất nhiều thời gian để tìm ra điều gì sai, bởi vì trong các giải pháp khác nó không được đề cập. –