SQL Server CE、 SQL Server 2005 精簡版或 SQL Server 2005 Mobile Edition 的處置方法從記憶體管理物件

文章翻譯 文章翻譯
文章編號: 834279 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

結論

本文將告訴您不同的方式,要同步處置受管理的 Microsoft SQL Server 2000 Windows CE 版、 Microsoft SQL Server 2005年精簡版,或 SQL Server 2005 Mobile Edition 的物件,您使用 Microsoft Visual Studio 建立的應用程式中使用。使用 Microsoft 的 NET。遄 A。

其他相關資訊

。SQL Server CE、 SQL Server 2005 精簡版,或 SQL Server 2005 Mobile Edition 的遄 Framework 資料提供者支援的類別,包含集合 SqlCeCommand 類別, SqlCeConnection 類別,以及 SqlCeDataReader 類別。您可以使用的情況下,這些項目的物件要從正在執行 Microsoft Windows CE 中的裝置取得存取權 SQL Server CE、 SQL Server 2005 精簡版或 SQL Server 2005 Mobile Edition 的資料庫類別受管理的環境。不過,您必須釋放的記憶體配置如果物件已不再需要的物件。

您可以使用下列方法來釋放配置到的記憶體類別的物件。

附註 Microsoft 建議您採用 Close) 方法或 Dispose) 若要釋放的記憶體的方法,下列程式碼撰寫樣式物件。NET 包含原生的類別參考。
  • 使用 Close) 方法或 Dispose) 方法。包含原生的所有類別SQL Server CE、 SQL Server 2005 精簡版,或 SQL Server 2005 Mobile Edition 的參考實作 IDisposable 介面。因為這些類別實作 IDisposable 介面, Dispose) 方法[ IDisposable 介面可以用來釋放的記憶體受管理的物件。

    這些類別也實作 Close) 是的方法類似於 Dispose) 方法。因此,您可以呼叫 Close)方法或 Dispose) 若要釋放的記憶體配置給方法物件。不過,如果您呼叫 Close) 方法中,您不需要呼叫 Dispose) 方法。

    比方說,當您使用 SqlCeDataAdapter 類別若要填入資料集,您必須明確處置所有關聯SqlCeCommand 表示選取的命令的執行個體插入 UPDATE 命令的命令,或刪除命令。您可以在任何使用下列的程式碼撰寫樣式。NET 類別,包含原生參考:
     SqlCeConnection conn = null; 
     try
     {
    	 conn = new SqlCeConnection(<ConnectionString>);
    	 conn.Open(); 
    	// Work with the connection object
    }
    catch (Exception en)
    {
    	// Handle the exception or rethrow it
    }
    finally
    {
    	// Always release the native references in the finally clause
    	// The statements in finally clause are guaranteed to run
    
    	if (null != conn) conn.Close(); 
    } 
  • 使用 Collect() 方法 GC 記憶體回收行程的類別。

    附註 這是非常昂貴,無法執行 Collect() 方法 GC 記憶體回收行程的類別。因此,Microsoft 建議您使用的 Collect()方法 GC 只有當您必須這麼做時,記憶體回收行程類別。

    使用下列的程式碼撰寫樣式來呼叫 Collect()應用程式中,記憶體回收行程方法:
    try
    {
           SqlCeConnection conn = null;
           conn = new SqlCeConnection(<ConnectionString>);
           conn.Open(); 
     
           // The connection instance goes out of scope and effectively loses native references here
           // The conn object is only disposed of when the Garbage Collector starts finalizing objects,
           // but this only occurs under memory pressure.
           // If many objects are allocated like this, the performance of the program decreases.
    }
    catch (Exception en)
    {
           // Handle the exception or rethrow it
    }
    finally
    { 
           // If GC.Collect() is called, the Garbage Collector is forced to run all the finalizers in the finalization queue. 
           // Therefore, the connection instance that was previously lost is disposed of here by the Collect method of the GC Garbage Collector class. 
           // By putting this in the finally clause we guarantee it will always be executed even if the exception is rethrown
           
           GC.Collect();
    }
     
    如果您使用的編碼樣式在此清單中的第一個項目符號點時,您不需要明確地叫用Collect() 記憶體回收行程的方法。

?考

如需詳細資訊 IDisposable 介面,請造訪下列 Microsoft 網站:
http://msdn2.microsoft.com/en-us/library/system.idisposable (vs.71).aspx
如需詳細資訊[ GC。Collect() 方法,請造訪下列 Microsoft 網站:
http://msdn2.microsoft.com/en-us/library/aa903907 (VS.71).aspx
如需詳細資訊[ SqlCeConnection.Close 方法,請造訪下列 Microsoft 網站站台:
http://msdn2.microsoft.com/en-us/library/system.data.sqlserverce.sqlceconnection.close (vs.71).aspx
如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
824462SqlCeCommand 不會自動處置物件如果您使用 SqlCeDataAdapter 物件
326164 用來檢視在 Pocket PC 2002 上的虛擬位址空間的 Dumpmem 公用程式
827837 修正: SQL Server CE 連接記憶體不足狀況時,會造成建立許多的 SqlCeDataReader 物件

屬性

文章編號: 834279 - 上次校閱: 2011年12月13日 - 版次: 1.0
這篇文章中的資訊適用於:
  • Microsoft .NET Compact Framework
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 專業版
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft SQL Server 2005 Compact Edition
關鍵字:?
kbgarbagecollect kbmemory kbappdev kbcodesnippet kbcode kbinfo kbmt KB834279 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:834279
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com