【渐进】延迟加载机制的简易实现(上)
2010-09-30 21:05:39 来源:WEB开发网用户需要实现如上接口来完成正常的数据加载。
接下来,需要设计一个非延迟加载区域 NotLazyScope:
/// <summary>
/// 延迟加载区域
/// </summary>
public class NotLazyScope : IDisposable
{
/// <summary>
/// 延迟标记槽
/// </summary>
private LocalDataStoreSlot _slot;
/// <summary>
/// 延迟标记槽名称
/// </summary>
public static readonly string SLOT_NAME = "NotLazy";
/// <summary>
/// 声明延迟加载区域
/// </summary>
public NotLazyScope()
{
this._slot = Thread.GetNamedDataSlot(SLOT_NAME);
Thread.SetData(this._slot, true);
}
/// <summary>
/// 结束?延?加?区域声明
/// </summary>
public void End()
{
Thread.SetData(this._slot, false);
}
#region IDisposable 成员
void IDisposable.Dispose()
{
this.End();
}
#endregion
}
为了实现如SessionScope的语法声明方式,我们需要在当前的上下文记录一些标记,这里利用了线程栈的数据槽来实现。
- ››延迟着色〔1〕
- ››延迟着色(2)
- ››加载XX.dll时出错的一般解决方法
更多精彩
赞助商链接