2014-11-12 1 views
0

ASP.NET에서 텍스트 기반 웹 브라우저 게임을 코딩하고 있습니다. 하지만 나는 여기서 물어보기로 결심했다. 사용자가 퀘스트를 입력하면 퀘스트를 진행하는 데 10 분이 걸릴 수 있습니다. 사용자가 게임을 종료하면 어떻게 자동으로 스크립트를 실행하고 퀘스트를 완료하고 선수 전원을 업그레이드 할 수 있습니까? 나는 CronJob과 같은 것을 들었다. 그러나 나는 ASP.NET에서 작동하는지 알지 못하므로이 작업을 수행하기 전에 어떤 생각을 들으려고합니다. 도와 줘서 고마워.ASP.NET에서 예약 된 작업을 수행하는 방법?

답변

2

콜백 기능이있는 캐시 항목을 추가하기 만하면됩니다.

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에서 웹을 배포하는 경우 웹 작업 프로젝트를 만듭니다.

그러나 상황에 따라 캐시를 사용하는 것이 가장 간단한 해결책 일 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 이 콜백 함수를 사용하면 사용자가 웹 사이트에 있지 않더라도 호출 할 것인가? – phoeNix

+0

수정하십시오. 사실, 아직 연결되어 있어도 사용자 세션에 액세스 할 수 없습니다. 따라서 예약 된 작업을 실행하는 데 필요한 값/키가있는 객체 (두 번째 매개 변수)를 캐시에 추가해야합니다. – salgiza

+0

@phoeNix - 사용자가 사이트를 떠난 경우에도 실행됩니다. 세션에 액세스 할 수없고 캐시가 모든 사용자에게 공유되므로 사용자 별 키가 필요합니다. –