C#代表funkiness

时间:2014-02-06 22:55:35

标签: c# asp.net

我遇到了一些委托方法的奇怪问题。

我有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开始执行时,更改已完全消失。

这似乎没有意义,我已经把我们的高级建筑师难住了,所以任何建议都会受到赞赏。

1 个答案:

答案 0 :(得分:-2)

问题是FuncA是委托,因此B.page_load立即返回,而不等待FunA返回。我怀疑是FuncA和userpage.page_load正在尝试同时更改同一个对象,因此会相互覆盖。尝试同步运行它们。