Tag: idisposable

处理用户控件,真的是要编辑.designer.cs文件吗?

对于具有必须处理的内部数据结构的用户控件,是将该代码添加到.designer.cs文件中的Dispose方法的正确位置,还是存在我们打算使用的事件? 编辑 :这是一个winforms用户控件。

处理嵌套的一次性物品?

我想知道是否有关于处理嵌套在另一个一次性物品内的一次性物品的约定(在财产/公共领域,而不是私人成员)。 例如,DataSet包含DataTable,SqlCommand包含SqlConnection。 显而易见的是,一个class级处理它拥有的所有Disposable物品,剩下的就是其余部分。 是否存在这样的惯例? 如果是这样,.NET库如何确定谁拥有什么? 如何确定是否正在处理嵌套对象? PS:我一直想知道这个问题,显然有其他问题: 调用SqlCommand.Dispose时会出现什么问题? 编辑1:发现配置DataSet,不配置其表。 // Fill dataset from sqldataadpater. foreach (DataTable dt in dataSet.Tables) { dt.Disposed += Program.DisposedEventHandler2; } Console.WriteLine(“Disposing dataset”); dataSet.Dispose(); //Event not fired here. Console.WriteLine(“Disposing datatables maually”); foreach (DataTable dt in dataSet.Tables) { dt.Dispose(); //Event fired here } #endregion

DbContext处理?

的DbContext public class HaberPortalDB : DbContext { public DbSet Haberler { get; set; } public DbSet Kategoriler { get; set; } public DbSet Yazarlar { get; set; } } public class Haberler { public virtual int Id { get; set; } public virtual string Baslik { get; set; } public virtual string Aciklama { get; […]

Icon.FromHandle:我应该处理它,还是调用DestroyIcon?

我使用Win32 SHGetFileInfo来获取属于某个文件的图标的句柄。 有很多描述如何执行此操作,也可以在stackoverflow上执行此操作,例如: 获取shell使用的图标 调用该函数后,您将拥有一个带有Icon图标句柄的结构。 使用静态方法Icon.FromHandle我可以将它转换为System.Drawing.Icon类的对象。 该类实现System.IDisposable。 正确的用法如下: using (Icon icon = Icon.FromHandle(shFileInfo.hIcon)) { // do what you need to do with the icon } 在离开using语句时,将放置图标对象。 MSDN在Icon.FromHandle的描述中警告(点击查看) : 使用此方法时,必须使用Win32 API中的DestroyIcon方法处置原始图标,以确保释放资源。 并在Icon.Dispose(点击查看) 释放此Icon使用的所有资源。 题: Dispose()对象是否足够,或者我应该调用Dispose()和DestroyIcon,还是调用DestroyIcon而不是Disposing对象?

在处理类实例时,是否需要显式处理其所有IDisposable成员?

我有一个类,它具有SqlConnection类型的属性。 SqlConnection实现了IDisposable 。 我有以下问题: 我的类是否也应该实现IDisposable ,因为它具有IDisposable类型的属性? 如果是,我在处理类的实例时是否需要显式处理属性? 例如 public class Helper : IDisposable { // Assume that it’s ANY OTHER IDisposable type. SqlConnection is just an example. public SqlConnection SqlConnection { get; set; } public void Dispose() { if (SqlConnection!= null) { SqlConnection.Dispose(); } } } 注意:我知道在实现IDisposable需要遵循一个模式,但我的问题非常具体到上面提到的情况。

我应该将entity framework视为非托管资源吗?

我正在使用一个在其构造函数中使用EF引用的类。 我已经实现了IDisposable ,但我不确定我是否需要析构函数,因为我不确定我是否可以将EF归类为非托管资源。 如果EF是托管资源,那么我不需要析构函数,所以我认为这是一个恰当的例子: public ExampleClass : IDisposable { public ExampleClass(string connectionStringName, ILogger log) { //… Db = new Entities(connectionStringName); } private bool _isDisposed; public void Dispose() { if (_isDisposed) return; Db.Dispose(); _isDisposed= true; } } 如果EF不受管理,那么我将继续这样做: public ExampleClass : IDisposable { public ExampleClass(string connectionStringName, ILogger log) { //… Db = new Entities(connectionStringName); } public […]

将’IDisposable’嵌套在一个’using’语句中

关于在单个’using’语句中使用嵌套一次性用法的快速问题:我应该写出每个一次性使用语句,还是可以将它们嵌入一个? 例: using( FileStream inFile = new FileStream( “myFile.txt”, FileMode.Open ) ) using( GZipStream gzip = new GZipStream( inFile, CompressionMode.Decompress ) ) using( FileStream outFile = new FileStream( “myNewFile.txt”, FileMode.CreateNew ) ) { gzip.CopyTo( outstream ); } 与 using( GZipStream gzip = new GZipStream( new FileStream( “myFile.txt”, FileMode.Open ), CompressionMode.Decompress ) ) using( FileStream outFile […]

“using”关键字用于分配新的C ++ / CLI类

我有一个’C ++ / CLI’程序集,它实现了某些类。 我们假设该类是’SomeType’。 现在,在’C#’开发的应用程序中,执行以下操作 – while(!Console.KeyAvailable) { using(SomeType type = new SomeType()) { type.doSomething(); //do something } } 它会有任何后果,如内存泄漏等在任何情况下,如果有未处理的exception或任何此类情况? 我读到using关键字通常应该用于实现IDisposable的类,但对于C ++ / CLI类?

实现IDisposable接口的目的是什么?

实现IDisposable接口的目的是什么? 我见过一些实现它的类,我不明白为什么。

C#处理IDisposable

有人可以解释如果你不Dispose一些IDisposable实体(通过using或直接Dispose调用)可能会发生什么? 这是否总是导致内存泄漏?如果是, C#内存泄漏类似于C++内存泄漏,它们很容易导致崩溃,或者从这个角度看C#沙箱是否更安全? 谢谢。