本帖最后由 wangji666666 于 2009-12-18 11:58:46 编辑

解决方案 »

  1.   

    是基类里加个东西。记录下状态。再把各个的状态写在基类的。静态属性当中。
    应该就是这样吧。
    ___________________________________
    我写的vs2005源代码管理器,只有团队资源管理中源码管理的功能。
    http://topic.csdn.net/u/20091203/10/ca40b678-5443-4a18-a9f6-fad9051d0797.html
      

  2.   

    to soarandy
    你说的很对!跟我要说的那个功能一样,我就是想达到这样的功能,让主程序响应程序集的事件,然后通过事件中参数传递,得到程序集的结果,不知道这样子是如果实现的。
      

  3.   

    未详细研究过,说一下我的看法参考一下:
    (1)myInterFace.Del = aaa;  报错原因是myInterFace.Del 只是定义一下委托的类型,还不是变量所以不能赋值的。可写成 myInterFace.Del myDelegate ; myDelegate=aaa;
    (2)感觉定义一个全局变量应该可以实现你的功能。
      

  4.   

    to goga21cn
    你说的就是我想实现的,具体该怎么做,能写个简单的例子吗?只要关键代码就可以了,就像我上面的a,a1,里面写个简单的实现就好
      

  5.   

    //程序集a1 
    namespace CTestOne 

        public class TClassOne : TestIF 

            public TClassOne() 
            { 
                System.Timers.Timer t = new System.Timers.Timer(2000); 
                t.Interval = 2000; 
                t.AutoReset = true; 
                t.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent); 
                t.Enabled = true; 
            } 
            public void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e) 
            { 
                d("CTestOne"+System.DateTime.Now.ToString()); 
            } 
        } 
    }
    里面d("CTestOne"+System.DateTime.Now.ToString()); 这句话是不是有问题?
      

  6.   

    接口using System;namespace SomethingsBase
    {
        /// <summary>
        /// 接口
        /// </summary>
        public interface ISomething
        {
            event EventHandler<ReportStatuEventArgs> ReportStatuEvent;
            void DoSoething();
            void OnDoSomething(ReportStatuEventArgs rsea);
        }    /// <summary>
        /// 自定义的事件参数
        /// </summary>
        public class ReportStatuEventArgs : EventArgs
        {
            public ReportStatuEventArgs(string s)
            {
                msg = s;
            }
            private string msg;
            public string Message
            {
                get { return msg; }
            }
            private DateTime startTime = DateTime.Now;
            public DateTime StartTime
            {
                get { return startTime; }
            }
            
        }
    }实现using System;
    using System.Collections.Generic;
    using System.Text;
    using SomethingsBase;namespace DoSomethings
    {
        public class DoSomething:ISomething
        {
            #region ISomething 成员        public event EventHandler<ReportStatuEventArgs> ReportStatuEvent;        public void DoSoething()
            {
                //...
                //某种情况下引发事件
                ReportStatuEventArgs e = new ReportStatuEventArgs("做某件事");
                
                OnDoSomething(e);
                //...
            }        public void OnDoSomething(ReportStatuEventArgs rsea)
            {
                EventHandler<ReportStatuEventArgs> handler = ReportStatuEvent;
                if (handler != null)
                {
                    handler(this, rsea);
                }
            }        #endregion
        }
    }主程序using System;
    using SomethingsBase;namespace EventTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                //这里可以用反射加载对象,示例为了简单就直接new出来了
                ISomething some = new DoSomethings.DoSomething();
                //指定事件方法
                some.ReportStatuEvent+=new EventHandler<ReportStatuEventArgs>(some_ReportStatuEvent);            for (int i = 0; i < 20; i++)
                {
                    some.DoSoething();
                    System.Threading.Thread.Sleep(500);
                }            Console.ReadKey();
            }        static void some_ReportStatuEvent(object sender, ReportStatuEventArgs e)
            {
                Console.WriteLine(e.Message +"  在  " + e.StartTime.ToString("HH:mm:ss"));
            }
        }
    }执行结果:做某件事  在  16:29:42
    做某件事  在  16:29:43
    做某件事  在  16:29:44
    做某件事  在  16:29:44
    做某件事  在  16:29:45
    做某件事  在  16:29:45
    做某件事  在  16:29:46
    做某件事  在  16:29:46
    做某件事  在  16:29:47
    做某件事  在  16:29:47
    做某件事  在  16:29:48
    做某件事  在  16:29:48
    做某件事  在  16:29:49
    做某件事  在  16:29:49
    做某件事  在  16:29:50
    做某件事  在  16:29:50
    做某件事  在  16:29:51
    做某件事  在  16:29:51
    做某件事  在  16:29:52
    做某件事  在  16:29:52
      

  7.   

    接口换成基类可能更好点,比如System.Windows.Form类
    关于事件发布请参考:如何:发布符合 .NET Framework 准则的事件(C# 编程指南)