Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 虽然datatable存储在缓存中,但每次使用后是否必须调用dispose?_C#_Asp.net_Caching_Datatable_Dispose - Fatal编程技术网

C# 虽然datatable存储在缓存中,但每次使用后是否必须调用dispose?

C# 虽然datatable存储在缓存中,但每次使用后是否必须调用dispose?,c#,asp.net,caching,datatable,dispose,C#,Asp.net,Caching,Datatable,Dispose,简单案例: 我在缓存中放了一个数据表 DataTable table = SomeClass.GetTable(); Cache["test"] = table; then in later calls i use DataTable table = (DataTable)Cache["test"]; 现在的问题是:我是否应该在每次调用时调用table.dispose,尽管它存储在缓存中?意味着对象总是相同的?或者每次缓存都会创建一个副本 thx:我认为,当您完全处理完数据表后,应该只调用D

简单案例:

我在缓存中放了一个数据表

DataTable table = SomeClass.GetTable();
Cache["test"] = table;

then in later calls i use
DataTable table = (DataTable)Cache["test"];
现在的问题是:我是否应该在每次调用时调用table.dispose,尽管它存储在缓存中?意味着对象总是相同的?或者每次缓存都会创建一个副本


thx:

我认为,当您完全处理完数据表后,应该只调用Dispose一次;调用Dispose会更改对象的状态


请注意,“缓存”并不总是意味着“复制”

您所做的只是在缓存中存储指针。。。实际的表仍然在堆上,所有.Net引用类型都存储在那里。。。你不是在复制它。。。 缓存中的变量只是用来阻止垃圾收集器擦除堆上的对象


不,在实际对象不再需要之前,您不想调用dispose。

DataTable是一个托管资源,不需要调用它的dispose方法才能被garabage集合正确清理