C# 使用windows程式控制window服務

來源:互聯網
上載者:User
最近在做一個大型項目的時候,需要window服務來做掃表倒表,但是又最好能夠隨時遠程登入後控制,並且可以傳遞一些參數進去讓windows服務與外界有些互動,並得到控制,於是,自己研究了一番,現在,把一些體會拿來跟大家一起體會。
在C# 中使用一個System.ServiceProcess 命名空間下的ServiceControl 來對windows服務進行控制,其實在底層是SCM(service control manager)。
咱們開始來一步一步操作。
第一步 :添加一個引用,System.ServiceProcess

第二步:從vs2005的伺服器總管來拖動一個服務樣本到設計介面。

第三步:編寫控制服務的代碼
當把一個服務拖動到設計介面的時候,就建立了一個基於某個服務的服務控制組件執行個體,ServiceControl1,
此執行個體有許多方法可以控制服務的狀態,以及執行自訂命令,執行自訂命令要注意的一點就是命令只能傳遞一個int類型的參數,而且這個參數有限制大於128,小於256,就是這個限制條件害得我鬱悶了好久,我一直傳遞的1,2,3之類的參數,老是說報錯。。。。最後在google中的程式碼搜尋中找到了答案。
當然在windows服務裡面你需要重寫一個方法,樣本如下:
protected override void OnCustomCommand(int command)
        {
            if (command == 100)
            {
                StreamWriter sw = new StreamWriter(@"C:\xx.txt", true);
                sw.WriteLine("command is "+command+"  " + DateTime.Now.ToString());
                sw.Close();
            }
            else if (command == 200)
            {
                StreamWriter sw = new StreamWriter(@"C:\xx.txt", true);
                sw.WriteLine("command is "+command +" "+ DateTime.Now.ToString());
                sw.Close();
            }
        }
代碼的其他部分就沒有什麼好說的了,點擊這裡<a target=blank src='http://files.cnblogs.com/FrameWork/WindowsApplication1.rar'>下載範例程式碼</a>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.