自定义了事件参数myEventArgs,希望将其传入Process类的Exited事件响应中去,代码如下:
public class myProcess : Process                                      //继承了Process类
        {
            public event System.EventHandler<myEventArgs> myExited;  //自定义退出事件
            protected override void Exited(EventArgs e)               //重写Exited事件时出错了!
            {
                if (myExited != null)
                    myExited(this, new myEventArgs());
            }        }
VS编译后的报错信息:错误myProcess.Exited(System.EventArgs)”: 无法重写,因为“System.Diagnostics.Process.Exited”不是函数
这是什么原因呢?

解决方案 »

  1.   

    说明这个Exited方法不能重写啊!
      

  2.   

    我需要将myEventArgs参数传入进Exited事件响应中去,怎样实现呢?
      

  3.   

    重写 System.Diagnostics.Process.OnExited 方法。Exited 是事件,不能重写的。
      

  4.   

    就我在一楼的举例代码,帮我重写一下OnExited方法吧,谢谢!
      

  5.   

    只要你的myEventArgs是继承自EventArgs的话,可以传进去吧[align=center]*****************************************
    本内容使用CSDN小秘书回复
    每天回帖即可得10分可用分!
    *****************************************[/align]
      

  6.   

    在进程功能级别, Process 类没有任何可供 override 的东西, 
    你派生她有个鸟用呢?
      

  7.   

    OnExited方法是不可以重写的。如果你想要用protected override void OnExited()重写该方法会已发异常:CS0506: “WebProcess.OnExited()”: 继承成员“System.Diagnostics.Process.OnExited()”未标记为 vitual、abstract 或 override,无法进行重写
    想要在自己的Process的派生类中使用OnExited ,代码如下:public class ProcessStopEventArgs : EventArgs
    {
        public string ProcessName;
        public ProcessStopEventArgs(string pName)
        {
            this.ProcessName = pName;
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }
    }
    public delegate void ProcessStopHandler(object sender, ProcessStopEventArgs e);
    public class WebProcess : Process
    {
        public event ProcessStopHandler OnStop;
        public WebProcess()
        {
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }
        public void Stop()
        {
            this.CloseMainWindow();
            this.Close();
            if (OnStop != null)
            {
                OnStop(this, new ProcessStopEventArgs(this.ProcessName));
            }
            OnExited();
        }
    }