0

关于下面的代码,在查找需要处理的对象时,using 语句是否考虑了通过 _ItemDataBound 方法和 Eval 方法调用的对象?或者它会在附加事件和评估被触发之前尝试处理,因为它们发生在生命周期的后期?

换句话说,它只是在调用所有 Eval 和附加到中继器的事件之后才处理数据上下文,还是这会导致数据上下文已经被处理错误?

protected void Page_Load(object sender, EventArgs e)
{
    using (EventManager manager = new EventManager())
    {
        EventDates = manager.GetWhatsOn(Request.QueryString["category"]);

        rptEventDates.DataSource = EventDates;
        rptEventDates.DataBind();
    }

...

public class EventManager : IDisposable
{
    private MainDataContext db;
    public EventManager()
    {
        db = new MainDataContext();
    }

    ....other methods....

    public void Dispose()
    {
        db.Dispose();
    }
}
4

1 回答 1

1

关于下面的代码,在查找需要处理的对象时,using 语句是否考虑了通过 _ItemDataBound 方法和 Eval 方法调用的对象?

不,它根本不会“找到”要处理的对象——它只是处理语句第一部分中提到的对象。所以你的代码大致相当于:

EventManager manager = new EventManager();
try
{
    EventDates = manager.GetWhatsOn(Request.QueryString["category"]);

    rptEventDates.DataSource = EventDates;
    rptEventDates.DataBind();
}
finally
{
    manager.Dispose();
}

没有其他东西会被处理,但它EventManager本身肯定被处理。

如果有任何事情需要稍后才处置资源,则不应使用语句using

于 2013-08-20T15:03:28.240 回答