title: Is there anyway to know when the screen has been updated/refreshed (OpenGL or DirectX maybe?)
body: <p>I currently have an application I'm writing in c# (using .NET) that requires me to start a timer as soon as a user sees an image on screen up until they respond with a key press.</p>
  
  <p>Now I realise that practically this is very difficult given the monitor input lag and response time, the time the keyboard takes to physically send the message, the OS to process it, etc.</p>
  
  <p>But I'm trying my best to reduce it down to mostly a constant error (the response time results will be used to compare one user to the next so a constant error isn't really an issue). However annoying hurdle is the variable caused by the monitor refresh rate, as I gather when my onPaint message is called and done with, it doesn't mean the image has <em>actually</em> been processed and sent from the graphics buffer?</p>
  
  <p>Unfortunately time restrictions and other commitments would realistically restrict me to continuing this task in c# for windows.</p>
  
  <p>So what I was wondering was if either handling all the drawing in OpenGL or DirectX or better still for me if it is possible to just using either OpenGL or DirectX to create an event when the screen is updated?</p>
  
  <p>Another suggestion given to me previously was regarding V-Sync, if I switch this off is the image sent as soon as it is drawn? as opposed to sending images at a set rate synchronised to the monitor refresh rate?</p>