当前位置:编程学习 > C#/ASP.NET >>

烦请各位高手指点迷津:《C#编程语言设计与开发》上的一道例题,谢谢

我用VS2005来做一道课本上的例题(《C#编程语言设计与开发》,陈钟 等 编著,清华大学出版社),可是在启动调试的时候显示如下错误:
错误1 命名空间“System”中不存在类型或命名空间名称“ServiceProcess”(是缺少程序集引用吗?)
错误2 命名空间“System”中不存在类型或命名空间名称“ServiceProcess”(是缺少程序集引用吗?)

因为是照着课本打的,所以我敢肯定没有打错代码。但是为什么会有这种问题呢?诚心诚意地请教各位,应该如何解决该问题,如能告知,万分感谢!!!

PS:附件里是该例题的源程序

源代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Windows_Service管理器
{
    public partial class Form1 : Form
    {
        private int index; //index用于记录所选的服务在listBox1中所在

的位置
        private System.ServiceProcess.ServiceController[] watch;
        //watch代表Windows Service的监视器数组
        private System.ServiceProcess.ServiceController control = 

new
            System.ServiceProcess.ServiceController();
        //control代表Windows Service的控制器
        public Form1()
        {
            InitializeComponent();
        }

        private void showAll_Click(object sender, EventArgs e)
        {
            //当按下showAll按钮时,在listBox1中显示全部的服务
            watch = 

System.ServiceProcess.ServiceController.GetServices();
            listBox1.DisplayMember = "DisplayName";
            listBox1.DataSource = watch;
        }

        private void listBox1_SelectedIndexChanged(object sender, 

EventArgs e)
        {
            control = (System.ServiceProcess.ServiceController)
            listBox1.SelectedItem;
            textBox1.Text = Control.DisplayName;
            switch (Control.Status)
            { /*当在listBox1中选中某项服务时,在textBox2中将显示出该

服务的相应状态,并且将相应的按钮设为禁用:*/
                case 

System.ServiceProcess.ServiceControllerStatus.ContinuePending:
                    start.Enabled = false;
                    pause.Enabled = true;
                    continueAgain.Enabled = false;
                    stop.Enabled = true;
                    textBox2.Text = "服务将重启动";
                    break;
                case 

System.ServiceProcess.ServiceControllerStatus.Paused:
                    start.Enabled = false;
                    pause.Enabled = false;
                    continueAgain.Enabled = true;
                    stop.Enabled = true;
                    textBox2.Text = "服务已被暂停";
                    break;
                case 

System.ServiceProcess.ServiceControllerStatus.PausePending:
                    start.Enabled = false;
                    pause.Enabled = false;
                    continueAgain.Enabled = false;
                    stop.Enabled = true;
                    textBox2.Text = "服务即将被暂停";
                    break;
                case 

System.ServiceProcess.ServiceControllerStatus.Running:
                    start.Enabled = false;
                    continueAgain.Enabled = true;
                    pause.Enabled = true;
                    stop.Enabled = true;
                    textBox2.Text = "服务正在运行";
                    break;
                case 

System.ServiceProcess.ServiceControllerStatus.StopPending:
                    start.Enabled = true;
                    stop.Enabled = false;
                    pause.Enabled = false;
                    continueAgain.Enabled = false;
                    textBox2.Text = "服务即将终止";
                    break;
                case 

System.ServiceProcess.ServiceControllerStatus.StartPending:
                    start.Enabled = false;
                    stop.Enabled = true;
                    pause.Enabled = true;
                    continueAgain.Enabled = true;
                    textBox2.Text = "服务即将开始";
                    break;
                case 

System.ServiceProcess.ServiceControllerStatus.Stopped:
                    start.Enabled = true;
                    stop.Enabled = false;
                    pause.Enabled = false;
                    continueAgain.Enabled = false;
                    textBox2.Text = "服务已经停止";
                    break;
                default:
                    start.Enabled = false;
                    continueAgain.Enabled = false;
                    stop.Enabled = false;
                    pause.Enabled = false;
                    textBox2.Text = "其他状态";
                    break;
            }

            //如果某个服务不允许被暂停或重启动,则禁用暂停服务和继续

服务按钮
            if (!control.CanPauseAndContinue)
            {
                pause.Enabled = false;
                continueAgain.Enabled = false;
            }
            //如果某个服务不允许被停止,则禁用停止服务按钮
            if (!control.CanStop)
            {
                stop.Enabled = false;
            }
        }

        private void start_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            /* 因为启动服务需要一小段时间,所以当按下“开始服务”按

钮时,应把光标的形式改变成等待状*/
            control = (System.ServiceProcess.ServiceController)
            listBox1.SelectedItem;
            control.Start();//启动服务
            control.WaitForStatus

(ServiceControllerStatus.Running);//等待服务运行
            int index = listBox1.SelectedIndex;//记录所选的服务在

listBox1中所在位置
            RefreshList();//因为服务的状态已经改变,所以要刷新服务列


            listBox1.SelectedIndex = index;//将光标定位在所操作的服

务位置上
            if (controller.Status == 

System.ServiceProcess.ServiceControllerStatus.Running)
            {
                textBox2.Text = "正在运行";
            }
            Cursor.Current = Cursors.Default;/*服务已经开始运行,所

以将光标的形状恢复成原状*/
        }

        private void pause_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            controller = (System.ServiceProcess.ServiceController)
            listBox1.SelectedItem;
            controller.Pause();//暂停服务
            controller.WaitForStatus

(ServiceControllerStatus.Paused);//等待服务被暂停
            int index = listBox1.SelectedIndex;
            RefreshList();
            listBox1.SelectedIndex = index;
            if (controller.Status == 

System.ServiceProcess.ServiceControllerStatus.Paused)
            {
                textBox2.Text = "已被暂停";
            }
            Cursor.Current = Cursors.Default;
        }

        private void continueAgain_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            controller = (System.ServiceProcess.ServiceController)
            listBox1.SelectedItem;
            controller.Continue();//重启动服务
            controller.WaitForStatus

(ServiceControllerStatus.Running);//等待服务的重新启动
            int index = listBox1.SelectedIndex;
            RefreshList();
            listBox1.SelectedIndex = index;
            if (controller.Status == 

System.ServiceProcess.ServiceControllerStatus.Running)
            {
                textBox2.Text = "正在运行";
            }
            Cursor.Current = Cursors.Default;
        }

        private void stop_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            controller = (System.ServiceProcess.ServiceController)
            listBox1.SelectedItem;
            controller.Stop();//停止服务
            controller.WaitForStatus

(ServiceControllerStatus.Stopped);//等待服务停止
            int index = listBox1.SelectedIndex;
            RefreshList();
            listBox1.SelectedIndex = index;
            if (controller.Status == 

System.ServiceProcess.ServiceControllerStatus.StopPending)
            {
                textBox2.Text = "已经停止";
            }
            Cursor.Current = Cursors.Default;
        }
    }
}
--------------------编程问答-------------------- 添加Reference:
System.ServiceProcess.dll --------------------编程问答-------------------- 在右侧上部项目上点右键,添加->引用,在弹出的对话框中确认选择了.NET页,所以选择System.ServiceProcess。 --------------------编程问答-------------------- 先谢谢楼上的两位。不过我试了下还是不行。。。反而引出了更多的错误。。。

错误 1 “System.Windows.Forms.Control”并不包含“DisplayName”的定义
错误 2 “System.Windows.Forms.Control”并不包含“Status”的定义
错误 3 当前上下文中不存在名称“ServiceControllerStatus”
错误 4 当前上下文中不存在名称“RefreshList”
错误 5 当前上下文中不存在名称“controller”
错误 6 当前上下文中不存在名称“controller”
错误 7 当前上下文中不存在名称“controller”
错误 8 当前上下文中不存在名称“controller”
错误 9 当前上下文中不存在名称“ServiceControllerStatus”
错误 10 当前上下文中不存在名称“RefreshList”
错误 11 当前上下文中不存在名称“controller”
错误 12 当前上下文中不存在名称“controller”
错误 13 当前上下文中不存在名称“controller”
错误 14 当前上下文中不存在名称“controller”
错误 15 当前上下文中不存在名称“ServiceControllerStatus”
错误 16 当前上下文中不存在名称“RefreshList”
错误 17 当前上下文中不存在名称“controller”
错误 18 当前上下文中不存在名称“controller”
错误 19 当前上下文中不存在名称“controller”
错误 20 当前上下文中不存在名称“controller”
错误 21 当前上下文中不存在名称“ServiceControllerStatus”
错误 22 当前上下文中不存在名称“RefreshList”
错误 23 当前上下文中不存在名称“controller”
--------------------编程问答--------------------
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            control = (System.ServiceProcess.ServiceController)
            listBox1.SelectedItem;
            textBox1.Text = Control.DisplayName;
            switch (Control.Status)

注意注意,应该是 control.DisplayName 吧,下边的也是,小心 IntelliSense!
如果用 Control.DisplayName,编译器会误以为你想调用 System.Windows.Forms.Control 类的静态方法 DisplayName,而非 System.ServiceProcess.ServiceController 类的某个实例的属性(control.DisplayName)。 --------------------编程问答--------------------
引用
注意注意,应该是   control.DisplayName   吧,下边的也是,小心   IntelliSense! 
如果用   Control.DisplayName,编译器会误以为你想调用   System.Windows.Forms.Control   类的静态方法   DisplayName,而非   System.ServiceProcess.ServiceController   类的某个实例的属性(control.DisplayName)。
  

问题总算解决了。。。谢谢LaoBai_2006 !!! 也感谢lalac和Eric_zdhz的热心帮助。。。总之谢谢大家^_^
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,