我遇到了一些委托方法的奇怪问题。
我有ClassA类:System.Web.Ui.Page
classB类:ClassA
class UserPage:ClassB
委托FuncA = UserPageObject.SomeMethod
当UserPage重新加载,保存并恢复其状态后,通过
调用委托protected override UserPage.Page_Load(object sender, EventArgs e){
//Calling the B.Page_Load method
base.Page_Load(sender, e);
//Do other stuff
}
protected virtual void B.Page_Load(object sender, EventArgs e){
FuncA.Invoke();
}
编辑添加FuncA初始化:
public delegate void FuncA();
[Serializable]
public class PageState
{
public Complete FuncA { get; set; }
}
PageStateObject.FuncA = SomeUserPageObject.SomeMethod;
FuncA对UserPage控件进行了一些更改,似乎对正确的对象起作用,否则执行成功,UserPage是正确的。当B.PageLoad返回并且UserPage.Page_Load开始执行时,更改已完全消失。
这似乎没有意义,我已经把我们的高级建筑师难住了,所以任何建议都会受到赞赏。
答案 0 :(得分:-2)
问题是FuncA是委托,因此B.page_load立即返回,而不等待FunA返回。我怀疑是FuncA和userpage.page_load正在尝试同时更改同一个对象,因此会相互覆盖。尝试同步运行它们。