1 public class 数据连接类:idispose 2 { 3 void dispose(){断开连接} 4 } 5 6 public class A 7 { 8 pulic 数据连接类 连接instance{get;set;} 9 pulic A(数据连接类 _连接instance==null) 10 { 11 if(_连接instance != null) 12 { 13 连接instance = _连接instance 14 }{ /// 创建新连接} 15 } 16 public Select() 17 { 18 using(连接instance){ ///做查询} 19 } 20 } 21 22 public class B 23 { 24 pulic 数据连接类 连接instance{get;set;} 25 pulic B(数据连接类 _连接instance==null) 26 { 27 if(_连接instance != null) 28 { 29 连接instance = _连接instance 30 }else{ /// 创建新连接} 31 } 32 public Select() 33 { 34 using(连接instance){ ///做查询} 35 } 36 }
37 ---------测试代码-------------- 38 var a = new A{}; 39 var b = new B(a.连接instance); 40 b.Select(); -----正常 41 a.Select(); ----由于b示例已经using将连接释放,此处报错
各位达人,针对以上问题,我改怎样保证A和B类中相互传递数据连接,同时保证操作完成后自动释放数据连接?谢谢各位能指点啦
把创建和释放连接放到A, B之外,A,B 里不要释放连接。
using(连接instance = 创建连接实例) { var a = new A{连接instance}; var b = new B(连接instance); b.Select(); a.Select(); }
如果你还想在A,B里释放连接,可以让A,B类继承 IDisposable,在Dispose()方法里释放连接(而不是在每次A,B的查询里释放连接)。
3ks