Uploads happen as soon as the task is complete and you have an internet connection. Failures cause a backoff that increases with each attempt.

Task reports are batched together because they hit the database, and there is significant savings by batching.

Tasks are reported at the first of:

1) 24 hours after completion.
2) 24 hours before report deadline.
3) "Maintain enough work for" before deadline. This is for disconnected crunchers.
4) Immediately on completion of upload if it is after 1 - 3.
5) On a work fetch from that project.
6) On a trickle up request (CPDN only).
7) On a trickle down request (no projects that I am aware of).
8) On a server scheduled connection.
9) On an Account Manager request.
10) When the user pushes the update button.
11) Immediately if No New Tasks is selected.BOINC WIKI