1

現在、WebSocket を使用していくつかのデスクトップ アプリケーションを開発しています (より正確には、Alchemy WebSocket を使用しています)。今では私のコードは正常に動作していますが、Visual Studio 2010 から指示されます。

Warning 2   CA2000 : Microsoft.Reliability : In method 'ServerController.SetupServer(int)', call System.IDisposable.Dispose on object '<>g__initLocal0' before all references to it are out of scope.   C:\Users\MaRiedl\documents\visual studio 2010\Projects\Alchemy-WebSockets\AWS-Server\ServerController.cs    38  AWS-Server

私はすでに MSDN のヘルプ ( http://msdn.microsoft.com/en-us/library/ms182289.aspx ) と (もちろん) stackoverflow.com を昼夜を問わず検索して ( 「使用」の使用)、この問題を解決しようとしました。 in C# ) - 残念ながら、これ以上良くなることはありません。

では、私の質問は次のとおりです。私が見つけられない問題を確認するには、「後輩」には程遠いのでしょうか、それとも Visual Studio 2010 からの単なる誤検出でしょうか?

これが私が苦労しているコードの一部です:

private WebSocketServer _webSocketServer;

private void SetupServer(int port)
    {
        // set port and configure authorized ip addresses to connect to the server
        _webSocketServer = new WebSocketServer(port, IPAddress.Any)
        {
            OnReceive = OnReceive,
            OnSend = OnSend,
            OnConnect = OnConnect,
            OnConnected = OnConnected,
            OnDisconnect = OnDisconnect,
            TimeOut = new TimeSpan(0, TimeoutInMinutes, 0)
        };
        _webSocketServer.Start();
    }
4

1 に答える 1

6

コード分​​析の警告は、使い捨てオブジェクトでオブジェクト初期化子を使用しているためです。

オブジェクト初期化子を使用するたびに、一時的な非表示のローカルが作成されます (詳細については、この質問を参照してください)。メッセージが参照しているのはこのオブジェクト ( <>g__initLocal0) です。作成中に例外がスローされた場合、このオブジェクトを破棄することはできません。

プロパティを個別に設定する場合

_webSocketServer = new WebSocketServer(port, IPAddress.Any);
_webSocketServer.OnReceive = OnReceive;

一時オブジェクトが作成されないため、メッセージは消えます。

于 2014-02-02T10:31:59.183 に答える