2010-01-06 4 views
0

VSController가 이미 DebuggerNonUserCode 속성을 사용하여 구현 한 경우 Dispose (boolean)를 UserControl에 구현하는 방법은 무엇입니까? 이 방법에 대한 나의 수정 사항이 제거 되었습니까?UserControl에 Dispose (bool) 구현

(UserControl.Designer.vb의 코드)

<System.Diagnostics.DebuggerNonUserCode()> _ 
Protected Overrides Sub Dispose(ByVal disposing As Boolean) 

답변

4

당신은 디자이너 파일에서 Dispose 방법을 제거하고 소스 파일에 추가해야합니다.
DebuggerNonUserCode 특성을 제거해야 할 수도 있습니다.

적어도 C#에서는 디자이너가 자동으로 디자이너 파일에 Dispose을 넣지 않고 VB 디자이너가 수행 한 경우 충격을 받았습니다.

+0

아하 ...없이 * DebuggerNonUserCode * ... – serhio

1

하나의 솔루션은 System.ComponentModel.Component에서 파생 된 클래스 또는 System.ComponentModel.IComponent을 구현하는 클래스에서 사용중인 모든 일회용 타입을 캡슐화하는 것입니다.

그런 다음 디자이너 생성 코드로 인스턴스화 된 IContainer에 추가 할 수 있으며 다른 구성 요소와 함께 처리됩니다.

예.

class MyDisposableComponent : IComponent 
{ 
    ... implementation 
} 

class MyUserControl : UserControl 
{ 
    MyDisposableComponent myDisposableComponent; 

    ... 

    void SomeMethod() 
    { 
     myDisposableComponent = new MyDisposableComponent(); 
     components.Add(myDisposableComponent); 
     // myDisposableComponent will be disposed automatically when the 
     // IContainer components is disposed by the designer-generated 
     // Dispose implementation. 
    } 

    ... 
} 
2

.Designer.vb 파일에서 해당 메서드를 수정하면 덮어 쓰지 않습니다. DebuggerNonUserCode 속성은 단순히 해당 코드를 디버깅 할 경우 해당 코드로 들어갈 수 없음을 의미합니다. 그것은 항상 넘어서게 될 것입니다.

관련 문제