疫情期间没有事做,下载了个VS2019学习学习,用C#创建了一个windows应用程序,使用了源分析器,2.9.6分析器包:Microsoft.CodeAnalysis.FxCopAnalyzers,就是下图的东西:
创建后没用经过任何改动,没有添加任何代码,也没有做其它动作,只是在上图“卸载(U)”的地方点击了个“安装” ,安装完毕后运行了下代码分析,然后就郁闷了,如下图:
为什么会出这种事,显示帮助上说:如果在对某个可释放对象的所有引用超出范围之前未显式释放该对象,则当垃圾回收器运行该对象的终结器时,将在某个不确定的时间释放该对象。 由于可能发生异常事件,将阻止对象的终结器运行,因此应改为显式释放对象。
做为只有一个窗体的应用程序来说,我怎么去释放,释放了后我窗体也没有了,合着我只能到这里游玩一圈,然后挥一挥衣袖,不带走一片云彩,对于我们这些小白来说,是完全摸不着头脑,总觉得微软是在欺负人。然后,强迫症犯了,在入口点改了改:
static class Program
{
private static Form1 frmMain; //解决CA2000,第一步
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
#region 解决CA2000,第二步
frmMain = new Form1();
Application.Run(frmMain); // 原来是:Application.Run(new Form1());
#endregion
}
}
我的疑问是,这样处理对还是不对,做为一个窗体的应用程序,如果显式释放,应该怎么做呢?我想using
语句应该不可能,其它就不会了,请大神们指点。