콜백 기능이있는 캐시 항목을 추가하기 만하면됩니다.
public void SomeMethod() {
var onRemove = new CacheItemRemovedCallback(this.RemovedCallback);
Cache.Add("UserId_QuestId", "AnyValueYouMightNeed", null, DateTime.Now.AddMinutes(10), Cache.NoSlidingExpiration, CacheItemPriority.High, onRemove);
}
public void RemovedCallback(String key, Object value, CacheItemRemovedReason r){
// Your code here
}
캐시 항목의 만료 시간은 10 분이며 메모리에서 제거되는 즉시 RemovedCallback이 호출됩니다.
참고 :
- 당신은 또한 (예 : Quartz.net 등) asp.net에서 일정 작업에 사용할 수있는 프레임 워크의 일부를 사용할 수 있습니다 단지 완전히 귀하의 질문에 대답합니다.
- 솔루션에서 콘솔 프로젝트를 만들고 Windows 스케줄러를 사용하여 웹 서버에서 일정을 계획하십시오.
- Azure에서 웹을 배포하는 경우 웹 작업 프로젝트를 만듭니다.
그러나 상황에 따라 캐시를 사용하는 것이 가장 간단한 해결책 일 수 있습니다.
답장을 보내 주셔서 감사합니다. 이 콜백 함수를 사용하면 사용자가 웹 사이트에 있지 않더라도 호출 할 것인가? – phoeNix
수정하십시오. 사실, 아직 연결되어 있어도 사용자 세션에 액세스 할 수 없습니다. 따라서 예약 된 작업을 실행하는 데 필요한 값/키가있는 객체 (두 번째 매개 변수)를 캐시에 추가해야합니다. – salgiza
@phoeNix - 사용자가 사이트를 떠난 경우에도 실행됩니다. 세션에 액세스 할 수없고 캐시가 모든 사용자에게 공유되므로 사용자 별 키가 필요합니다. –