Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Как узнать все возможные InstanceNameдля группы?!


Автор: Deja_Vu 5.10.2007, 13:49
Код

            PerformanceCounter PC_net; 
            PC_net = new PerformanceCounter(); 
            PC_net.CategoryName = "Network Interface"; 
            PC_net.CounterName = "Bytes Received/sec";
            PC_net.InstanceName = "КАК УЗНАТЬ ЭТУ ДРЯНЬ?!";
            PC_net.MachineName = "MY-PC";
            MessageBox.Show(PC_net.NextValue().ToString());

Пытаюсь просмотреть кол-во полученной информации через счетчик, но мне требуется InstanceName.
Если я вручную указываю там имя моей сетевой карточки, то появляется ошибка исполнения, что такой экземпляр не нейден -((

Оставляю пустым, ошибка исполнения - "необходимо указать экземпляр, т.к. их несколько"

Иду в "Performance Monitor" смотрю каким образом экземпляры названы там.
Называю так же (напр
имер "_global_"), ошибка исполнения - "такой экземпляр не найден".
(Кстати, почему то в "Performance Monitor" отображается, что ни по одному экземпляру я не получаю данных - зачем так?!)

от собственно вопрос, как узнать все возможные InstanceName для CategoryName и CounterName.
Или это индивидуально ищиться -((

----
Ну и тут же вопрос ... я вообще верно пытаюсь посмотреть входящий трафик?! ((-

Автор: mr.DUDA 5.10.2007, 17:02
Для получения InstanceName, нужно создать PerformanceCounterCategory и вызвать GetInstanceNames(). После этого как-нибудь выбрать какой инстанс больше подходит и использовать его:

Код
using System;
using System.Diagnostics;
using System.Windows.Forms;

class Program
{
    static void Main()
    {
        PerformanceCounterCategory cat = new PerformanceCounterCategory("Network Interface");
        string[] instanceNames = cat.GetInstanceNames();

        PerformanceCounter PC_net;
        PC_net = new PerformanceCounter();
        PC_net.CategoryName = "Network Interface";
        PC_net.CounterName = "Bytes Received/sec";
        PC_net.InstanceName = instanceNames[0];
        //PC_net.MachineName = "MY-PC"; --- можно не указывать
        MessageBox.Show(PC_net.NextValue().ToString());
    }
}

Автор: Deja_Vu 5.10.2007, 19:04
Цитата(mr.DUDA @  5.10.2007,  17:02 Найти цитируемый пост)
Для получения InstanceName, нужно создать PerformanceCounterCategory и вызвать GetInstanceNames(). После этого как-нибудь выбрать какой инстанс больше подходит и использовать его:


Большое спасибо ... а не можешь подсказать ... вообще я верно подхожу к задаче?!
У меня почему то
 все время выводит 0 -((
Да и в Win'овом просмоторщике счетчиков такой же результат все время -((

Автор: mr.DUDA 6.10.2007, 10:03
Хм, ну вообще-то я не в курсе как эти счётчики работают smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)