gpt4 book ai didi

c# - CA2000 - "out-of-school-junior-programmers"- 错误或误报?

转载 作者:太空宇宙 更新时间:2023-11-03 19:10:10 24 4
gpt4 key购买 nike

我目前正在使用 websockets 开发一些桌面应用程序(更准确地说:我正在使用 Alchemy 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

我已经尝试通过 MSDN 帮助 ( http://msdn.microsoft.com/en-us/library/ms182289.aspx ) 和(当然)日夜搜索 stackoverflow.com ( Uses of "using" 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();
}

最佳答案

代码分析警告是因为您在一次性对象上使用了对象初始值设定项。

每当您使用对象初始值设定项时,都会创建一个临时的、不可见的局部变量(有关更多详细信息,请参见 this question)。消息所指的是这个对象 ( <>g__initLocal0 ),因为如果在创建它时抛出异常,您将无法处理它。

如果单独设置属性

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

然后消息将消失,因为没有创建临时对象。

关于c# - CA2000 - "out-of-school-junior-programmers"- 错误或误报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21380279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com