close

很多人應該都有使用過Performance效能監視器的這個功能,有去細玩過的人,都會發現到它的好用,但說好用,似乎又少了那麼一丁點的功能,總是有那麼一點遺憾,Visual Studio內有Performance Counter這個元件可以供使用,所以接下來就可以用這個物件,來寫出我們所需要的功能.


 


這個Performance Counter元件在Visual Studio 2002/2003/2005內都有,並不是什麼新的功能,以下的例子,是採用VS 2005 C#所撰寫的.


 


現在要舉的這個使用範例,可能是部份MIS人員所會遇到的,當有一個自己開發的程式放在某台伺服器上,但我們又不可能隨時登入去看那個程式是否還在正常執行,如何籍由另一個程式來監控它,並回報檢查結果,讓我們能隨時掌握它的狀況,也不需一直登入去看.上班就喝咖啡,聊是非就好~


 


有一點要注意的,就是這個只支援.Net的程式,以下為程式範例 :


 


public string CheckAP(string MachineName,string InstanceName)


{//MachineName電腦名稱,InstanceName程式名稱


    PerformanceCounter pc = new PerformanceCounter();


    try


    {


        pc.CategoryName = ".NET CLR Exceptions";//這裡所設定的就是效能監視器的效能物件,看到這個,就知道為什麼這程式只支援.Net的程式


        pc.CounterName = "# of Exceps Thrown";//這裡所設定就是效能監視器的計數器


        pc.ReadOnly = true;


        pc.InstanceLifetime = PerformanceCounterInstanceLifetime.Global;


        pc.MachineName = MachineName.Trim();


        pc.InstanceName = InstanceName.Trim();


        return pc.NextValue().ToString();//回傳發生Exception的次數


    }


    catch (InvalidOperationException ioe)


    {


        if (Process.GetProcessesByName(InstanceName, MachineName).Length == 0)//檢查程式是否沒有執行


        {


            return " 程式未執行!";


    }


        else


    {


            return ioe.Message;


        }


}


catch (Exception ex)


{


        return ex.Message;


}


finally


{


        pc.Close();


    pc.Dispose();


    PerformanceCounter.CloseSharedResources();//釋放由計數器配置的效能計數器程式庫的共用狀態


}


}


 


之後,只要用Timer定時的去呼叫這一段程式,就可以知道監控中的那個程式,是否運作正常.如果異常,再依個人的需求去做處理就好,這個例子,是用來抓Exception,但效能監視器可不是只能監控這個,它還可以監控記憶體,IO,CPU,SQL,網路,所以這個就可以有很大的發揮空間,看大家怎麼去利用Performance Counter所回傳的結果去做處理囉.


 


詳細說明,請參考Visual StudioHelp,Performance Counter.


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 jeffyeh 的頭像
    jeffyeh

    jeffyeh

    jeffyeh 發表在 痞客邦 留言(0) 人氣()