ビデオの再生に使用される ActiveX COM オブジェクトがあり、C# アプリケーションで使用されています。次のように宣言されます。
private AxVIDEOPLAYERUILib.AxVideoPlayerUI axVideoPlayerUI;
私のコードでは、次のようにロックされています。
lock (axVideoPlayerUI)
{
axVideoPlayerUI.EnableControls = 1;
axVideoPlayerUI.Visible = true;
axVideoPlayerUI.ShowOverlay = 1;
axVideoPlayerUI.OverlayPosition = 3;
axVideoPlayerUI.Play();
}
しかし、私は取り除きたいという警告を受け取ります:
警告 1 CA2002: Microsoft.Reliability: 'VideoPlayerControl.LoadRecording(RecordVideo, int)' は、タイプ 'AxVideoPlayerUI' の参照をロックします。これを、強力な ID を持つオブジェクトに対するロックに置き換えます。
このリンク( http://msdn.microsoft.com/en-us/library/ms182290.aspx ) から、次のオブジェクトの ID が弱いことが示されています。
MarshalByRefObject、ExecutionEngineException、OutOfMemoryException、StackOverflowException、文字列、MemberInfo、ParameterInfo、Thread。
しかし、私のオブジェクトはこれらのカテゴリのいずれにも該当しません。
また、ここで説明されているように、オブジェクトを静的にしようとしました: C# ロックとコード分析警告 CA2002 ですが、エラーが発生します:
エラー 1 インスタンス参照でメンバー 'MyNameSpace.VideoPlayerControl.axVideoPlayerUI' にアクセスできません。代わりに型名で修飾してください
元の警告を取り除く方法を知っている人はいますか??