如何解决如何避免在ASP.NET中重复调用初始化方法?
|protected void Page_Load(object sender,EventArgs e) {
if (!IsPostBack) { // sadly,**never** in here }
MyInit() // Slow initialization method,that I only wan\'t to call one time.
}
因此,如果我不能将ѭ1uck塞在if
中,可以使用OnNeedDataSource()
解决我的性能/吃力问题吗?
解决方法
并不是很确定这是否意味着您的意思,但是要从Page_Load初始化一次,可以使用带有静态布尔值的静态类来确定它是否已初始化。鉴于它位于Page_Load上,因此您还需要防止出现多个线程-因此,请使用双重检查的锁使其具有线程安全性并防止出现竞争状况。
public static class InitMe
{
private static bool isInitialized = false;
private static object theLock = new Object();
public static void MyInit()
{
if(!isInitialized)
{
lock(theLock);
{
if(!isInitialized) // double checked lock for thread safety
{
// Perform initialization
isInitialized = true;
}
}
}
}
}
然后在您的Page_Load中,通过InitMe.MyInit()
调用它
希望能有所帮助。
, 尝试这个:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!Page.IsPostBack) { MyInit(); }
}
我假设您在页面或用户控件中...
HTH。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。