我已经知道你通常不会这样做,但这是我的情况:
我有一个非静态List<T>
在正常使用期间被添加,然后以一定间隔转储到数据库。我希望能够使用AppDomain.CurrentDomain.ProcessExit
转储我尚未转储的List<T>
中的任何值。每次转储时List
都会被清除。
有没有办法在没有给定上下文的情况下访问此List
,即使它是静态的 - &gt;不静电?
答案 0 :(得分:1)
只需将处理程序作为lambda添加到可以访问列表的范围内。
var list = new List<string>()
{
"Item 1",
"Item 2"
};
AppDomain.CurrentDomain.ProcessExit += (sender, theArgs) =>
{
File.WriteAllLines(@"C:\temp\mylist.txt", list);
};
一种不错的方法是将此行为封装在List<T>
的子类中。
public class MyReallyPersistentList<T> : List<T>
{
public MyReallyPersistentList()
{
AppDomain.CurrentDomain.ProcessExit += (sender, args) =>
{
var items = this.Select(i => i?.ToString());
File.AppendAllLines(@"C:\temp\mylist.txt", items);
};
}
}