public void Resume()
{
// Only paused client can be resumed.
if (this.Status != DownloadStatus.Paused)
{
throw new ApplicationException("Only paused client can be resumed.");
}
this.Status = DownloadStatus.Waiting;
// Start to download in the same thread.
DownloadInternal(null);
}