孟子e章给出的vb代码,现在从这个代码翻译成c#,给习惯c#的人参考
需要注意的是图片一定需要是ico格式,否则可能会导致托盘的不显示

using System;
namespace UBISerialsController
 {
  /// <summary>
  /// Class1 的摘要说明。
  /// </summary>
  public class Class1
  {
   static System.ServiceProcess.ServiceController sc;
   static System.Windows.Forms.NotifyIcon ni;
   static System.Windows.Forms.ContextMenu cm;
   static System.Timers.Timer timer;  public Class1()
   {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    
   }  static void Main()
   {
    try
    {
     sc=new System.ServiceProcess.ServiceController("UBISerials");
     ni=new System.Windows.Forms.NotifyIcon();
     ni.Visible=false;
     cm=new System.Windows.Forms.ContextMenu();
     cm.MenuItems.Add(new System.Windows.Forms.MenuItem("停止",new EventHandler(StopService)));
     cm.MenuItems.Add(new System.Windows.Forms.MenuItem("暂停",new EventHandler(PauseService)));
     cm.MenuItems.Add(new System.Windows.Forms.MenuItem("继续",new EventHandler(ContiuneService)));
     cm.MenuItems.Add(new System.Windows.Forms.MenuItem("开始",new EventHandler(StartService)));
     cm.MenuItems.Add("-");
     cm.MenuItems.Add(new System.Windows.Forms.MenuItem("关于",new EventHandler(About)));
     cm.MenuItems.Add(new System.Windows.Forms.MenuItem("退出",new EventHandler(Exit)));
     ni.ContextMenu=cm;
     ni.Visible=true;
     SetUpTimer();
     System.Windows.Forms.Application.Run();     
    }
    catch(System.Exception ex)
    {
     System.Windows.Forms.MessageBox.Show(ex.Message.ToString());
    }
   }  private static void StopService(object sender,System.EventArgs e)
   {
    if(sc.Status==System.ServiceProcess.ServiceControllerStatus.Running&&sc.CanStop==true)
    {
     try
     {
      sc.Stop();
     }
     catch(System.Exception ex)
     {
      System.Windows.Forms.MessageBox.Show(ex.Message.ToString());
     }
    }
   }  private static void PauseService(object sender,System.EventArgs e)
   {
    if(sc.Status!=System.ServiceProcess.ServiceControllerStatus.Paused&&sc.CanPauseAndContinue==true)
    {
     try
     {
      sc.Pause();
     }
     catch(System.Exception ex)
     {
      System.Windows.Forms.MessageBox.Show(ex.Message.ToString());
     }
    }
   }  private static void ContiuneService(object sender,System.EventArgs e)
   {
    if(sc.Status==System.ServiceProcess.ServiceControllerStatus.Paused&&sc.CanPauseAndContinue==true)
    {
     try
     {
      sc.Continue();
     }
     catch(System.Exception ex)
     {
      System.Windows.Forms.MessageBox.Show(ex.Message.ToString());
     }
    }
   }  private static void StartService(object sender,System.EventArgs e)
   {
    if(sc.Status==System.ServiceProcess.ServiceControllerStatus.Stopped)
    {
     try
     {
      sc.Start();
     }
     catch(System.Exception ex)
     {
      System.Windows.Forms.MessageBox.Show(ex.Message.ToString());
     }
    }
   }  private static void About(object sender,System.EventArgs e)
   {
             System.Windows.Forms.MessageBox.Show("2005.4.3","关于");
   }  private static void Exit(object sender,System.EventArgs e)
   {
    try
    {
     timer.Dispose();
     sc.Dispose();
     cm.Dispose();
     ni.Dispose();
     System.Windows.Forms.Application.Exit();
    }
    catch(System.Exception ex)
    {
     System.Windows.Forms.MessageBox.Show(ex.Message.ToString());
    }
   }  private static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
   {
    GetServiceState();
   }  private static void GetServiceState()
   {
    sc.Refresh();
    switch(sc.Status)
    {
     case System.ServiceProcess.ServiceControllerStatus.Stopped:
      {
      ni.Icon=new System.Drawing.Icon("stopped.ico");
      cm.MenuItems[0].Enabled=false;
      cm.MenuItems[1].Enabled=false;
      cm.MenuItems[2].Enabled=false;
      cm.MenuItems[3].Enabled=true;
      break;
     }
     case System.ServiceProcess.ServiceControllerStatus.Running:
     {
      ni.Icon=new System.Drawing.Icon("started.ico");
      cm.MenuItems[0].Enabled=true;
      cm.MenuItems[1].Enabled=true;
      cm.MenuItems[2].Enabled=false;
      cm.MenuItems[3].Enabled=false;
      break;
     }
     case System.ServiceProcess.ServiceControllerStatus.Paused:
     {
      ni.Icon=new System.Drawing.Icon("paused.ico");
      cm.MenuItems[0].Enabled=false;
      cm.MenuItems[1].Enabled=false;
      cm.MenuItems[2].Enabled=true;
      cm.MenuItems[3].Enabled=false;
      break;
     }
     default:
     {
      ni.Icon=new System.Drawing.Icon("paused.ico");
      break;
     }
    }
   }  private static void SetUpTimer()
   {
    timer=new System.Timers.Timer();
    timer.Interval=500;
    timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
    timer.Start();
   }
  }
 }