“被移动到页面文件”事件

时间:2013-05-30 20:33:13

标签: c# windows

C#中是否有事件(或类似事件)告诉当前进程何时从内存移动到页面文件?此外,还有一个从页面文件返回的事件。

或者,如果这些事件不存在,或许可以采取更好的方式或建议?

我想要实现这一目标的原因: 我有一个应用程序/库存管理程序,它允许您查看所有内容,它主要将所有信息保存在一个大型列表中。我想在将该列表写入磁盘之前清除该列表。它只是变得陈旧的信息,并在必须恢复时减慢程序的返回。我宁愿在数据库中查询新信息,而不是加载陈旧信息。

2 个答案:

答案 0 :(得分:3)

不,没有这样的事件。即使有,内存也在错误的页面级别进行分页,并且没有简单的方法可以知道哪些对象驻留在哪些页面中。除此之外,即使您知道对象X在页面Y中,X也可能引用可能驻留在其他页面中的其他对象。因此,即使当前正在调用X,实际使用它也可能需要在其他内存中进行分页。垃圾收集器可以在其生命周期内移动内存中的对象,使整个问题更加复杂。

那就是说,对于您的用例,听起来您甚至不应该将数据存储在大型列表中。你能使用普通的数据绑定吗?

答案 1 :(得分:1)

没有这样的事件。但是,如果您的程序恰好使用ASP.Net,那么您可以使用System.Web.Caching.Cache:当内存压力时它将转储您的缓存对象。

我不知道ASP.Net之外有一个好的,但也许其他人可以推荐一些东西?

修改:meklarian建议尝试System.Runtime.Caching,可能是MemoryCache。谢谢meklarian!