public void BeginDownload()
{
// Only idle download client can be started.
if (this.Status != DownloadStatus.Initialized)
{
throw new ApplicationException("Only Initialized download client can be started.");
}
this.Status = DownloadStatus.Waiting;
ThreadPool.QueueUserWorkItem(DownloadInternal);
}