You could use [`RunScheduledTask`][1] or its relatives for this. For example, to append a random integer to `catch` once every two seconds you could do something like 

    catch = {};
    task = RunScheduledTask[AppendTo[catch, RandomInteger[10]], 2];

You could also use [`CreateScheduledTask`][2] which is similar to `RunScheduledTask` except that the task won't be started automatically after it's been created. You'll have to use [`StartScheduledTask`][3] to start it manually.

To start and stop the scheduled task you can use `StartScheduledTask[task]` and `StopScheduledTask[task]`, respectively, and `RemoveScheduledTask[task]` will remove the scheduled task once you're done with it.

Additional information about these functions is available in the [Documentation Center][4].


  [1]: http://reference.wolfram.com/mathematica/ref/RunScheduledTask.html
  [2]: http://reference.wolfram.com/mathematica/ref/CreateScheduledTask.html
  [3]: http://reference.wolfram.com/mathematica/ref/StartScheduledTask.html
  [4]: http://reference.wolfram.com/mathematica/guide/TimedEvaluations.html