[英]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.