2010-07-13 2 views
2

는 사용 사례가 HttpContext.Items로 퍼팅을 위해 존재하는 클래스를IDisposable 항목을 ASP.NET * 요청 * 캐시에 처리하려면 어떤 이벤트를 사용해야합니까?

class Foo: IDisposable 
{ 
Dispose() 
{ 
    //Dispose of nonmanged resources. 
} 
} 

하자 이미지를 상상할 수 있습니다. IDisposable을 구현하는 객체를 추가 할 때 자동으로 오류가 발생하지 않습니다. (알고 있을지 모르겠지만 대답이 있어야 함)

해당 항목을 처분하기 위해 어떤 이벤트를 사용해야합니까?

또한 객체가 두 개의 다른 메소드 블록으로 사용되기 때문에 블록을 사용할 수 없다고 가정합니다.

+2

'Application_EndRequest', 아마도 마지막으로 필요할 수도 있습니다. –

답변

3

@ Jaroslav Jandek에 따르면, global.asax의 Application_EndRequest에 연결하는 것이 좋습니다. 상품이 HttpContext.Items으로 사전 설정되어 있는지 확인하고 처분되는 경우 간단한 점검을 수행 할 수 있습니다.

protected virtual void Application_BeginRequest (Object sender, EventArgs e) 
    { 
     HttpContext.Current.Items["test"] = new IDisposableObject(); 
    } 

    protected virtual void Application_EndRequest (Object sender, EventArgs e) 
    { 
     if(HttpContext.Current.Items.Contains("test")) { 
      ((IDisposable)HttpContext.Current.Items["test"]).Dispose(); 
     } 

    } 
관련 문제