本文整理汇总了C#中IResource.GetReadStream方法的典型用法代码示例。如果您正苦于以下问题:C# IResource.GetReadStream方法的具体用法?C# IResource.GetReadStream怎么用?C# IResource.GetReadStream使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IResource
的用法示例。
在下文中一共展示了IResource.GetReadStream方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DownloadResource
public void DownloadResource(IResource resource, string destination) {
try {
this.buttonReady.Enabled = false;
this.labelFileDownload.Text = "Datei (" + resource.DisplayName + ") wird runtergeladen: ";
this._downloadInProgress = true;
this._worker.WorkerReportsProgress = true;
this._worker.WorkerSupportsCancellation = true;
this._worker.DoWork += new DoWorkEventHandler((object sender, DoWorkEventArgs e) => {
try {
Stream sourceStream = resource.GetReadStream();
FileStream fileStream = new FileStream(destination, FileMode.Create);
byte[] buffer = new byte[10000];
long totalBytesRead = 0;
long bytesRead = 0;
DateTime begin = DateTime.Now;
do {
if (this._worker.CancellationPending) {
e.Cancel = true;
Console.WriteLine("BackgroundWorker wird abgebrochen!");
break;
}
bytesRead = sourceStream.Read(buffer, 0, buffer.Length);
if (bytesRead > 0) {
totalBytesRead += bytesRead;
fileStream.Write(buffer, 0, (int)bytesRead);
DateTime now = DateTime.Now;
TimeSpan diffTime = now.Subtract(begin);
if (diffTime.TotalSeconds >= 1) {
int progressPercentage = (int)(totalBytesRead * 100 / resource.ContentLength);
this._worker.ReportProgress(progressPercentage, totalBytesRead);
begin = DateTime.Now;
}
}
} while (bytesRead > 0);
fileStream.Close();
} catch(Exception exc) {
Console.WriteLine(exc.Message);
}
}
);
this._worker.ProgressChanged += new ProgressChangedEventHandler((object sender, ProgressChangedEventArgs e) => {
this.labelFileDownload.Text = String.Format("Datei ({0}) wird runtergeladen: {1}/{2}", resource.DisplayName, this.GetBestSizeFormat((long)e.UserState), this.GetBestSizeFormat(resource.ContentLength));
this.labelPercentage.Text = e.ProgressPercentage + "%";
progressBarFileDownload.Value = e.ProgressPercentage;
}
);
this._worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler((object sender, RunWorkerCompletedEventArgs e) => {
Console.WriteLine("BackgroundWorker fertig!");
if (e.Cancelled) {
try {
File.Delete(destination);
} catch(Exception) {
}
} else {
this.labelFileDownload.Text = String.Format("Datei ({0}) wird runtergeladen: {1}/{2}", resource.DisplayName, this.GetBestSizeFormat(resource.ContentLength), this.GetBestSizeFormat(resource.ContentLength));
this.labelPercentage.Text = "100%";
}
progressBarFileDownload.Value = 100;
this._downloadInProgress = false;
this.buttonReady.Enabled = true;
}
);
this._worker.RunWorkerAsync();
} catch(Exception e) {
Console.WriteLine(e.Message);
}
}