关于下面的代码,在查找需要处理的对象时,using语句是否考虑了通过_ItemDataBound方法和Eval方法调用的对象?或者它会在附加事件和触发之前尝试处理,因为它们发生在生命周期的后期?
换句话说,它是否仅在调用所有Evals和附加事件到转发器之后处理datacontext,或者这会导致datacontext已被处置错误吗?
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();
}
}
答案 0 :(得分: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
语句。