title: Windows Workflow Delay Activity Behavior
body: <p>I feel my question is somewhat straight forward, but I've added some details of my problem in the "Background Info" section in case it is too vague.</p>
  
  <p><strong>Question</strong></p>
  
  <p>How does the WorkflowServiceHost determine that a persisted activity, that is Idle due to Delay, has reached the Delay timeout?  Does it load it into memory and check every so often, or is there something else happening here?</p>
  
  <p><strong>Background Info</strong></p>
  
  <p>So, I'm a bit new to workflow and I'm trying to determine the feasibility of using it for a business process that would use a 3 month delay.  Basically, the business process is to allow a customer a 3 month trial of upgraded service.  To accomplish this, I'm thinking of implementing a Pick activity that splits between a WCF Receive ("Cancel upgrade receive") and a 3 month Delay activity.  If the delay expires, they are upgraded permanently and billing is updated.  Alternatively, if the cancel is initialized then, well...  yeah, you get the idea :)</p>
  
  <p>So....  my concern is in regards to how Delay is implemented when using SQL workflow persistence.  I don't want to end up w/ 500 activities in the persistence store that have to be loaded every 10 minutes for 3 months in order to check if the Delay activity expired.  </p>