VS2015 定時服務及控制端

來源:互聯網
上載者:User

標籤:inter   name   服務安裝   也有   目錄結構   項目   gets   path   contain   

 

一.  服務端

  1. 如—建立項目—經典案頭—Windows服務—起名svrr

         

 

        2. 打到server1 改名為svrExecSqlInsert 右擊對應的設計介面,添加安裝服務類別目錄結構

           

        3. svrExecSqlInsert裡有打到OnStart()方法開始寫代碼如下 

        /// <summary>        /// 服務開啟操作        /// </summary>        /// <param name="args"></param>        protected override void OnStart(string[] args)        {            Timer tmInsert = new Timer();            tmInsert.Interval = 5000;//5秒的定時器            tmInsert.Elapsed += TmInsert_Elapsed;            tmInsert.Enabled = true;        }        /// <summary>        /// 定時執行資料庫插入        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void TmInsert_Elapsed(object sender, ElapsedEventArgs e)        {            using (SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=123;database=oa"))            {                using (SqlCommand cmd = new SqlCommand())                {                    con.Open();                    cmd.Connection = con;                    cmd.CommandText = @"insert into UserInfo(UserName,Password,dutyid,RegTime,email)                                       values(‘test‘,‘123‘,0,GETDATE(),‘[email protected]‘)";                    cmd.CommandType = CommandType.Text;                    cmd.ExecuteNonQuery();                }            }        }

到現在服務端就完成了 選通過命令安裝後 看看資料庫中的變化 已經產生了很多資料了

            

二.  服務控制端 有時我們同一個服務可能通過設定檔等對不同執行個體的資料庫進行操作而服務又要安在同一台電腦上,不要說用的人員了就是.net開發的人員對這一些命令也有點頭大,那麼就有了控制斷,這個先建一個表單應用程式

          

         1. 將form1改為frmMain 放一個menuStrip 管理服務(安裝、卸載、重新整理)、操作服務(啟動、停止)、退出 再加一下dataGridView Dock=fill

         2. 增加一個ServiceInfo類

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace SvrUI{   public class ServerInfo    {        public string SvrName { get; set; }        public string SvrDisplayName { get; set; }        public string SvrDescription { get; set; }        public string SvrPath { get; set; }    }}

3在frmMain表單中加入如下代碼來顯示電腦中的服務列表 如果要顯示自己安裝的服務可通過安半時限制服務首碼或尾碼過濾一下

 public frmMain()        {            InitializeComponent();            IniControls();            IniData();        }        /// <summary>        ///1. 添加控制項        /// </summary>        private void IniControls()        {            DataGridViewCell cellTemple = new DataGridViewTextBoxCell();            dataGridView1.Columns.AddRange(new DataGridViewColumn[] {                new DataGridViewTextBoxColumn() { Name="SvrName",HeaderText="服務名稱",DataPropertyName="SvrName",CellTemplate=cellTemple },                new DataGridViewTextBoxColumn() { Name="SvrDisplayName",HeaderText="服務顯示名稱",DataPropertyName="SvrDisplayName",CellTemplate=cellTemple},                new DataGridViewTextBoxColumn() { Name="SvrDescription",HeaderText="服務描述名稱",DataPropertyName="SvrDescription",CellTemplate=cellTemple},                new DataGridViewTextBoxColumn() { Name="SvrStatus",HeaderText="服務狀態",DataPropertyName="SvrStatus",CellTemplate=cellTemple},                new DataGridViewTextBoxColumn() { Name="SvrPath",                    HeaderText ="服務路徑",DataPropertyName="SvrPath",CellTemplate=cellTemple,AutoSizeMode= DataGridViewAutoSizeColumnMode.Fill}            });        }        /// <summary>        ///2. 初始化資料        /// </summary>        private void IniData()        {            //顯示服務列表 如果只控制自己安裝的服務 可以在安裝時限制顯示的名稱 如顯示名稱必須包含MySvr:            // var svrs = ServiceController.GetServices().Where(svr=>svr.DisplayName.Contains("MySvr"));            var svrs = ServiceController.GetServices();//顯示電腦的全部服務            List<ServiceInfo> lst = new List<ServiceInfo>();            foreach (var svr in svrs)            {                string description = "";                string cpath = GetWindowsServiceInstallPath(svr.ServiceName, out description);                lst.Add(new ServiceInfo() { SvrName = svr.ServiceName, SvrDisplayName = svr.DisplayName, SvrStatus = svr.Status.ToString(), SvrDescription = description, SvrPath = cpath });            }            dataGridView1.DataSource = lst;        }        /// <summary>        /// 擷取服務安裝路徑        /// </summary>        /// <param name="ServiceName"></param>        /// <returns></returns>        public string GetWindowsServiceInstallPath(string ServiceName, out string description)        {            string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;            string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();            description = (Registry.LocalMachine.OpenSubKey(key).GetValue("Description") ?? "").ToString();            //替換掉雙引號               path = path.Replace("\"", string.Empty);            return path;        }        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)        {            Close();        }
View Code

效果

其他代碼待續。。。。

 

VS2015 定時服務及控制端

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.