2014-04-09 8 views
6

मैं सभी सर्विस पैक, सी # और .NET Framework 4.5 के साथ विजुअल स्टूडियो 2012 अल्टीमेट संस्करण के साथ एक WinForm ऐप विकसित कर रहा हूं। इस ढेर के साथआंतरिक नेट फ्रेमवर्क डेटा प्रदाता त्रुटि 1

Internal .Net Framework Data Provider error 1 

:

मैं इस अपवाद नाशक में

en System.Data.ProviderBase.DbConnectionInternal.PrePush(Object expectedOwner) 
    en System.Data.ProviderBase.DbConnectionPool.PutObject(DbConnectionInternal obj, Object owningObject) 
    en System.Data.ProviderBase.DbConnectionInternal.CloseConnection(DbConnection owningObject, DbConnectionFactory connectionFactory) 
    en System.Data.SqlClient.SqlConnection.CloseInnerConnection() 
    en System.Data.SqlClient.SqlConnection.Close() 
    en AdoData.TRZIC.DisposeCurrentConnection() 
    en AdoData.TRZIC.Finalize() 

:

~TRZIC() 
{ 
    DisposeCurrentConnection(); 

    if (this.getCodeCmd != null) 
     this.getCodeCmd.Dispose(); 
} 

private void DisposeCurrentConnection() 
{ 
    if (this.conn != null) 
    { 
     if (this.conn.State == ConnectionState.Open) 
      this.conn.Close(); 

     this.conn.Dispose(); 
     this.conn = null; 
    } 
} 

मैं लाइन this.conn.Close(); में अपवाद मिलता है।

और connprivate SqlConnection conn = null;

तुम जानते हो क्यों करते है?

+0

कुछ गलतियों रहे हैं, तो आप this.conn को 'की जरूरत नहीं है = शून्य; 'इसे निपटाने के बाद, और मैं' DisposeCurrentConnection() 'को कॉल करने से पहले अपने आदेश का निपटान करने का सुझाव देता हूं। – RezaRahmati

उत्तर

10

मुझे यहां समाधान मिला है: http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/b23d8492-1696-4ccb-b4d9-3e7fbacab846/

मूल रूप से है:

सावधानी
बंद कॉल या एक कनेक्शन, किसी DataReader या अपनी कक्षा के अंतिम रूप विधि में किसी भी अन्य प्रबंधित वस्तु पर फेंक नहीं है। फाइनल में, आपको केवल उन्बंधित संसाधनों को छोड़ना चाहिए जो आपकी कक्षा का मालिक है। यदि आपकी कक्षा में किसी भी अप्रबंधित संसाधन नहीं हैं, तो अपनी कक्षा परिभाषा में अंतिम विधि शामिल न करें। अधिक जानकारी के लिए, कचरा संग्रह देखें।

0

इस का जवाब नहीं है, लेकिन मैं दृढ़ता से आप इस तरह के माध्यम से कनेक्शन का उपयोग करने का सुझाव देते हैं और आप चिंता करने की जरूरत है न निपटाने वस्तुओं

के बारे में
using (SqlConnection connection = new SqlConnection(connectionString)) 
{  
    try  
    { 

      connection.Open(); 
      SqlCommand command = new SqlCommand("......", connection); 
      command.ExecuteNonQuery();  
    } 
    catch (Exception) 
    { 
     /*Handle error*/ 
    } 

} 
संबंधित मुद्दे

 संबंधित मुद्दे