2010-11-03 66 views
1

好吧,所以我有一個類A實現方法M1,需要一個Excel路徑和工作表名稱,並返回一個OledbDataReader。 B類調用方法M1,用OledbDataReader做一些事情,然後關閉OledbDataReader。但我怎樣才能關閉OLEDBConnection對象?我沒有訪問它,因爲A類中的M1打開了連接!有任何想法嗎?謝謝你如何關閉oledbconnection對象?

回答

1

可以重塑你這樣的A類實現IDisposable

class HelperClass : IDisposable 
{ 
    private bool _disposed; 
    private OleDbConnection _connection; 

    public HelperClass() 
    { 
     _connection = << open the conection >>; 
    } 

    public OledbDataReader GetOpenedReader() 
    { 
     return << open your reader here with the connection >>; 
    } 

    public void Dispose() 
    { 
     if (!_disposed) 
     { 
      _disposed = true; 

      _connection.Dispose(); 
     } 
    } 
} 

然後,它的呼叫班的職責如下:

using (var helperClass = new HelperClass()) 
{ 
    // call the method that opens the reader and uses it 
} 
+0

首先,感謝您的詳細解答。我真的很新鮮。我從來沒有聽說過「助手類之前」。你建議任何好的教程,這將有助於我更好地理解你給我發送的?以及關於您發給我的代碼,我將使用它,然後在調用A類方法的B類中,我將首先調用GetOpenerReader,然後調用Dispose方法..對吧? – PeacefulSoul 2010-11-03 18:29:33

+0

在這個例子中,'HelperClass'是類'A'。 'using'的例子爲你調用Dispose。如果你使用這樣的類,會自動調用Dispose。 – 2010-11-03 19:47:44

1

如果你有像你這樣的外部類的使用。

using (OleDbConnection connection = new OleDbConnection(connectionString)) 
{ 



} 

這將出售其所有的好時機......