문제

FXCOP 에서이 경고를 받고 있습니다.

" 'rellartform'에는 idisposable 유형 인 필드 'rellartform.done'이 포함되어 있습니다.

좋아, 나는 이것이 무엇을 의미하는지 이해하고 왜 이것이 해야하는지 이해한다 ... System.Windows.Forms.Form 당신이 당신을 무시할 수는 없습니다 .Close() 또는 .Dispose(), 그래서 뭘 할건데? 현재이 솔루션으로 실행 중입니다.

    private void RestartForm_FormClosing(object sender, FormClosingEventArgs e)
    {
        done.Set();
        done.Close();
    }

내 응용 프로그램에 대비 한대로 작동하지만 FXCOP는 여전히이 메시지를 보여줍니다. 내가 덮고 있고 안전하게 무시할 수 있습니까, 아니면 다른 방법이 있습니까?

도움이 되었습니까?

해결책

당신은 그것을 무시해야합니다 Dispose 방법 Form

일반적으로 이것은 RETHARTFORM.DESIGNER.CS 파일에서 자동으로 재정의되므로 디자이너가 다시 작성하지 않고 추가 해야하는 모든 코드를 추가 할 수 있도록 코드 파일에 처리를 이동해야합니다.

ROTARTFORM.CS에서

protected override void Dispose(bool disposing)
{
  if (disposing)
  {
    if (components != null)
    {
      components.Dispose();
    }

    // Dispose stuff here
  }

  base.Dispose(disposing);
}

다른 팁

나는이 방법을 사용한다 :)

            Image bgImage = Image.FromFile(workingDir + "\\" + button.BackgroundImage);
            currentButton.Image = bgImage;
            currentButton.Disposed += (Object sndr, EventArgs evnt) => bgImage.Dispose();

reptartform이 system.windows.forms.form을 확장하면 dispose (bool drosposing)를 무시할 수 있어야합니다. idisposables를 폐기하려면 "RestartForm"클래스에 대해 이것을 올바르게 구현해야합니다.

그것은 다음과 같아야합니다.

public override Dispose(bool disposing)
{
   if (disposing)
   {
       // Dispose was called from user code. Dispose of managed resources here.
       done.Dispose();
   }

   // Dispose of unmanaged resources here, and invoke base dispose.
   base.Dispose(disposing);
}

Dispose 메소드,이 방법을 무시해야합니다. 통제에서 나옵니다 기본 클래스

protected override void Dispose(bool disposing)
{
  if (disposing)
  {
    event.Dispose();
  }
  base.Dispose(disposing);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top