积极答复者
silverlithg新问题

问题
-
今天还发现一个问题,觉得应该是Bug
this.pWork.Children.Clear();
this.pWork.Children.Add(new SLUI.HR.HRMain());
它并没有真正删除掉前一个HRMain实例,下一个新的HRMain实例还有上一个实例的状态- 已移动 Raymond TangModerator 2009年9月8日 4:27 Silverlight相关 (发件人:.NET Framework 一般性问题讨论区)
答案
全部回复
-
this.pWork.Children.Clear();
this.pWork.Children.Add(new SLUI.HR.HRMain());
就是这样写的,没有在外部保持句柄,在HRMain中的一个方法中,确实调用到一个静态变量,但也是一调用就丢弃了,它本身没有静态变量。
恩,那就应该在程序初始化的时候重置这个静态全局变量,要不然只能说程序还不够规范哦。
不能够程序初始化方法一样,同一个程序里,初始的效果却不一样,那就加参数传进去,这种耦合应该去掉。
如果您觉得对您有帮助,请在“是否有帮助”点“是”;如果你觉得回复很满意,请“标记为已解答” -
刚才仔细查了下,不是实例的问题,而是异步调用的问题
public HRMain() {
InitializeComponent();
this.BindOffice();
}
void BindOffice() {
MessageBox.Show("Init BindOffice Start");
EMS.SLCore.EMSSvc.Proxy.SearchOfficeSCompleted +=
(object sender, EMS.SLCore.SVC.SearchOfficeSCompletedEventArgs e) => { this.Dispatcher.BeginInvoke(delegate {
MessageBox.Show("Init BindOffice"); });
};EMS.SLCore.EMSSvc.Proxy.SearchOfficeSAsync();
}
需要说明的是,这是一个usercontrol类, 是由一个主页面,MainPage,负责调用装载的,装载方法如下:
this.pWork.Children.Clear();
this.pWork.Children.Add(new SLUI.HR.HRMain());
调试结果:
第一次点击菜单装载Hramin是正确的,MessageBox.Show("Init BindOffice Start"); MessageBox.Show("Init BindOffice");各显示一次。
第二次再同样操作点击主页面的菜单,装载HRMain, MessageBox.Show("Init BindOffice Start"); 1 次
MessageBox.Show("Init BindOffice"); 显示2次
第三次同样操作
MessageBox.Show("Init BindOffice Start"); 1 次
MessageBox.Show("Init BindOffice"); 显示3次
没有进行第4次操作,可以看出同步调用显示MessageBox.Show("Init BindOffice Start"); 是正确的,但异步的MessageBox.Show("Init BindOffice"); 就是错的
谁能帮我解决一下