Member 13004956 Ответов: 0

Как я могу получить потребление данных каждого отдельного приложения в windows.


Я хочу получить, сколько данных потребляется каждым приложением за определенный промежуток времени.
То, что я хочу, предположим, сценарий
сейчас 10: 00 утра
Первый раз, когда я захватил данные.

1. chrome - 1 200 000 байт
2. skype-100 045 байт
3. Мировоззрение - 450,612
.
.
.

Предположим, через 10 минут(10: 10 утра)
1. chrome - 2,860,000 байт
2. skype-196,025 байт
3. Мировоззрение - 482,214
.
.
.

Что я уже пробовал:

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                var bytesSentPerformanceCounter = new PerformanceCounter();
                bytesSentPerformanceCounter.CategoryName = ".NET CLR Networking";
                bytesSentPerformanceCounter.CounterName = "Bytes Sent";
                bytesSentPerformanceCounter.InstanceName = GetInstanceName();
                bytesSentPerformanceCounter.ReadOnly = true;

                var bytesReceivedPerformanceCounter = new PerformanceCounter();
                bytesReceivedPerformanceCounter.CategoryName = ".NET CLR Networking";
                bytesReceivedPerformanceCounter.CounterName = "Bytes Received";
                bytesReceivedPerformanceCounter.InstanceName = GetInstanceName();
                bytesReceivedPerformanceCounter.ReadOnly = true;

                Console.WriteLine("Bytes sent: {0}", bytesSentPerformanceCounter.RawValue);
                Console.WriteLine("Bytes received: {0}", bytesReceivedPerformanceCounter.RawValue);
                Thread.Sleep(1000);
            }
        }

        private static string GetInstanceName()
        {
            string returnvalue = "not found";
          //Checks bandwidth usage for CUPC.exe..Change it with your application Name
            string applicationName = "CUPC"; 
                PerformanceCounterCategory[] Array = PerformanceCounterCategory.GetCategories();
            for (int i = 0; i < Array.Length; i++)
            {
                if (Array[i].CategoryName.Contains(".NET CLR Networking"))
                    foreach (var item in Array[i].GetInstanceNames())
                    {
                        if (item.ToLower().Contains(applicationName.ToString().ToLower()))
                            returnvalue = item;

                    }

            }
            return returnvalue;
        }
    }
}


Я не нахожу ни одного экземпляра ни в одном приложении. Не в этом, а также не в категории типа " .NET CLR Networking 4.0.0.0"

gggustafson

Вы пробовали отлаживать свой код? Также в будущем пожалуйста включите операторы using для вашего кода

0 Ответов