다음을 통해 공유


CA2025: 'IDisposable' 인스턴스를 통합되지 않은 작업에 전달하지 마세요.

재산 가치
규칙 아이디 CA2025
타이틀 'IDisposable' 인스턴스를 통합되지 않은 작업에 전달하지 마세요.
범주 신뢰성
수정 사항이 문제를 해결하고 있는지 혹은 새로운 문제를 일으키지 않는지 여부 비손상
.NET 10 기본적으로 사용하도록 설정 아니오

원인

IDisposable 인스턴스는 종료되지 않은 작업으로 전달되고 인스턴스 사용을 완료하기 전에 삭제될 수 있습니다.

규칙 설명

인스턴스를 사용하는 IDisposable 통합되지 않은 작업은 삭제된 후 해당 인스턴스를 오래 사용할 수 있습니다. 인스턴스를 삭제하기 전에 해당 인스턴스를 사용하는 작업이 완료되었는지 확인합니다.

예시

다음 코드 조각(및 해당 Visual Basic에 해당하는 코드)은 CA2025의 위반입니다.

public Task DoSomethingAsync()
{
    // Using statements and using blocks can both be violations.
    using (var disposable = new DisposableThing())
    {
        return DoSomethingInternalAsync(disposable);
    }
}
public async Task DoThingsAsync()
{
    var disposable = new DisposableThing();
    var task = DoSomethingInternalAsync(disposable);
    // More code here.
    dispose.Dispose();
    // It's a violation if arguments are disposed before the task is awaited.
    await task.ConfigureAwait(false);
}

경고를 표시하지 않는 경우

작업이 삭제되기 전에 인스턴스를 사용하여 IDisposable 완료된 것을 알고 있는 경우 이러한 경고를 표시하지 않습니다.

경고 표시 안 함

단일 위반을 억제하려면 소스 파일에 전처리기 지시문을 추가하여 규칙을 비활성화한 다음 다시 활성화하세요.

#pragma warning disable CA2025
// The code that's violating the rule is on this line.
#pragma warning restore CA2025

파일, 폴더 또는 프로젝트에 대한 규칙을 비활성화하려면 none에서 해당 심각도를 로 설정하세요.

[*.{cs,vb}]
dotnet_diagnostic.CA2025.severity = none

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.