一个.NET 3.5应用程序是否有可能告诉.NET运行时:“嘿,我后面将要使用 MB内存,请立即分配这么多内存或者立即失败?”
背景是:我有一个C#控制台应用程序,运行一个返回大量数据的数据库查询,然后对其进行一些处理。查询可能需要很长时间(数小时),随着结果被读取,内存使用量不断增加。查询结束后,由于需要进行处理,内存会立即飙升。如果机器没有足够的RAM,则应用程序在该点失败 - 在查询上浪费了几个小时!这对用户来说非常令人沮丧。如果RAM不足,我想让应用程序快速失败。
当然,我可以尝试某些hack,比如分配一个我实际上不需要的大数组,然后在我真正需要内存之前将其设置为null,但这并不理想,因为它可能导致进程在本来有足够内存时耗尽内存。理想情况下,我希望只使用所需的内存,并且除非可以保证整个应用程序运行所需内存的某个特定量,否则要尽早失败。这可行吗?