次の方法で共有


CA2001: 問題が発生する可能性のあるメソッドは呼び出しません

TypeName

AvoidCallingProblematicMethods

CheckId

CA2001

[カテゴリ]

Microsoft.Reliability

互換性に影響する変更点

なし

原因

メンバーが危険性または問題のあるメソッドを呼び出します。

規則の説明

不要または危険性のあるメソッド呼び出しを使用しないでください。

この規則違反は、メンバーが次のいずれかのメソッドを呼び出した場合に発生します。

メソッド

Description

GC.Collect

GC.Collect を呼び出すと、アプリケーションのパフォーマンスに重大な影響を与える可能性があります。このメソッドが必要になる場合はほとんどありません。詳細については、MSDN のブログ エントリ「Rico Mariani's Performance Tidbits (Rico Mariani が紹介するパフォーマンスに関するニュース)」を参照してください。

Thread.Resume

Thread.Suspend

予測できない動作が発生することがあるため、Thread.Suspend と Thread.Resume を使用することは推奨されていません。スレッドの同期やリソースの保護を行う場合は、Monitor、[T:System.Threading.Mutex,]MutexSemaphore など、System.Threading 名前空間の他のクラスを使用してください。

SafeHandle.DangerousGetHandle

無効なハンドルを返す場合があるため、DangerousGetHandle メソッドにはセキュリティ上のリスクが伴います。DangerousGetHandle メソッドを安全に使用する方法の詳細については、DangerousAddRef メソッドおよび DangerousRelease メソッドを参照してください。

Assembly.LoadFrom

Assembly.LoadFile

Assembly.LoadWithPartialName

これらのメソッドを使用すると、予期しない場所からアセンブリが読み込まれる場合があります。アセンブリを読み込むためのメソッドの詳細については、MSDN Web サイトのブログの投稿「Suzanne Cook's .NET CLR Notes (Suzanne Cook のブログ: .NET CLR の注意事項)」の「LoadFile vs. LoadFrom (LoadFile と LoadFrom の比較)」および「Choosing a Binding Context (バインディング コンテキストの選択)」を参照してください。

CoSetProxyBlanket (Ole32)

CoInitializeSecurity (Ole32)

マネージ コード内でユーザー コードの処理が開始されてから CoSetProxyBlanket を呼び出すと、予期しない結果になる場合があります。共通言語ランタイム (CLR: Common Language Runtime) が初期化処理を実行することにより、ユーザーの P/Invoke が成功しないことがあります。

マネージ アプリケーションに対して CoSetProxyBlanket を呼び出す必要がある場合は、ネイティブ コード (C++) の実行可能ファイルを使用してプロセスを開始し、ネイティブ コード内で CoSetProxyBlanket を呼び出してから、マネージ コード アプリケーションをプロセス内で開始することをお勧めします (必ずランタイムのバージョン番号を指定してください)。

違反の修正方法

この規則違反を修正するには、危険性または問題のあるメソッドの呼び出しを削除するか、別のメソッドに置き換えます。

警告を抑制する状況

問題のあるメソッドを使用しなければならない場合にのみ、この規則からのメッセージを抑制する必要があります。

参照

その他の技術情報

信頼性の警告