CA2000 - “外的学校初级程序员” -mistakes或假阳性?(CA2000 - “out

2019-10-19 06:41发布

我使用的WebSockets(:我与炼金术的WebSockets合作,能够更精确地)目前正在开发一些桌面应用程序。 现在我的代码工作正常,但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

我已经尝试过解决这个问题MSDNs帮助( http://msdn.microsoft.com/en-us/library/ms182289.aspx通过搜索stackoverflow.com日夜()和(当然) “使用”的使用在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();
    }

Answer 1:

代码分析警告,因为你是一个一次性的对象使用一个对象初始化。

每当你使用一个对象初始化一个临时的,看不见的地方创建(见这个问题的更多细节)。 正是这种对象( <>g__initLocal0 )该消息是指,因为你不能如果正在创建而它则抛出异常来处理它。

如果单独设置的属性

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

那么该消息会消失,因为没有创建临时对象。



文章来源: CA2000 - “out-of-school-junior-programmers”-mistakes or false positive?