c#中Win窗体数量的限制

本文关键字:Win 窗体 | 更新日期: 2023-09-27 18:07:11

我正在编写WinForms应用程序,到目前为止它包含37个表单。这是因为我的项目需要。

我的问题是:

  1. 在c#中创建的表单数量是否有限制?
  2. 对应用程序性能有影响吗?

谢谢你的帮助。

c#中Win窗体数量的限制

c#中创建表单有限制吗?

我想。net框架没有这样的限制。显然,创建并保存在内存中的表单越多,内存就越少,直到耗尽为止。内存越少,性能越慢。

另一方面,如果您只在内存中保留当前形式,并让GC通过将其实例排除在范围之外来处理其他形式,则不会出现此类问题。

在ram用完之前,表单的数量没有限制。

不是我所知道的,或者项目中的其他模块或类可以不受任何限制地创建您需要的任意数量

问候。

我有一个项目有太多的winforms在它(大约50)。经过2或3调试构建和运行后,我曾经得到以下错误。

Error 1   Unexpected error writing metadata to file
项目

' E: ' Repository ' ' JewelSoft ' PresentationTier ' obj ' ' PresentationTier.exe释放的——'没有足够的存储空间来完成此操作。"PresentationTier

所以要小心,总是在需要的地方实现GC。

更新1:

虽然有GC.Collect()这样的方法,但除非你的代码突然结束或切换线程,否则你通常不需要实现它。诸如处理结束后不需要的表单和避免重复声明object之类的事情将会有所帮助。

更新2:

要了解更多何时何地写GC。收集请参考以下链接:

  1. GC.Collect ()

  2. 何时调用GC。收集

  3. 什么时候可以叫GC.Collect?

关于form dispose,在form close方法中它会自动被处理,但是如果你在其他形式中为该窗体设置了变量那么建议将form1 = null;写在form1_disposed event