繁体   English   中英

我可以设置一些东西来使类在卸载时做一些事情吗

[英]Can I set something up to make a class do something on unload

如果我有课,

class order()
{
    int orderId {get;set;}
    double total {get;set;}
    public order(){}
    ...
}

有什么我可以重载的东西,以便C#每次都将要卸载时做一些事情,而不是告诉它我要完成吗?

   static void Main(string[] args)
        {
            Order activeOrder = new Order();
            // do stuff to the order
            activeOrder = new Order(); <---- Automatically commit any changes to the order, since I am starting a new one. 
        }

您要问的没有任何意义。 当您将新的Order实例分配给activeOrder变量时,第一个Order实例不会被“卸载”。 它才有资格进行垃圾回收(除非在其他地方也引用了它)。 这意味着下一次GC将运行,实例将被收集,并且终结器(如果已定义)将运行。 问题在于它是完全不确定的:您不知道GC何时运行。

Order类无法检测到该变量被分配了新实例。 您所能做的就是编写一个终结器,但是由于您不知道它何时运行,所以这可能不是一个好主意。 在完成当前Order处理后,应显式提交更改。

除了线程安全性:

class Order()
{
  static Order instance;

  int orderId {get;set;}
  double total {get;set;}
  public Order()
  {
    if (instance != null)
      instance.Unload();
    instance = this;
  }
  ...
  public Unload()
  {
  }
}

这仍然留下了一个问题,即谁将卸载Order的最后一个实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM