c#-4.0 - System.Web.UI.Control.LoadRecursive() 在我的用户控件或页面中调用了多次

标签 c#-4.0 user-controls performance

我的一个页面上有一个用户控件,但我在此页面上遇到以下错误

Object reference not set to an instance of an object.

我已经很容易地解决了这个问题,但是我在这个错误的堆栈跟踪中发现了一些奇怪的东西。

当我检查堆栈跟踪时,如下所示

at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

它不是完整的堆栈跟踪,而是其中的一部分。我想知道“System.Web.UI.Control.LoadRecursive()”这个函数的作用是什么。它被调用 11 次,我担心这可能会导致我的应用程序出现性能问题。我认为调用此函数是因为我正在使用用户控件。我在应用程序的许多地方使用这种用户控件。

请告诉我是否有人知道这一点。

最佳答案

LoadRecursive() 调用当前控件的 OnLoad() 方法,然后对其所有控件递归调用 LoadRecursive()子控件,包括嵌套在 html 中的控件。

因此,对于已传递到自定义控件的每个父控件,堆栈上都会有 1 个 LoadRecursive() 调用。复合控件可以多合一,这会增加深度。

这不一定是性能问题。只是嵌套深度的指示。

关于c#-4.0 - System.Web.UI.Control.LoadRecursive() 在我的用户控件或页面中调用了多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13720734/

相关文章:

windows - ElementHost 中的 Application.Current 为空

c# - 自定义控件的工具提示

c#-4.0 - Great Plains eConnect 问题、FileNotFoundException...我缺少什么?

wpf - VisualStateManager同时出现在WPF Toolkit和PresentationFramework中 - 如何解决

C#多重继承

mysql - 授予所有用户对一个 Mysql 数据库的访问权限

ios - 应用程序调试启动非常慢,可能与 "lldb-rpc-server"相关?

java - 多次有效验证一个小 arrayList 的所有元素是否包含在另一个小 arrayList 中

sql - 是否可以 O(1) 访问数据库行?

c# - 试图在 IList 中获取索引位置的问题