当前位置: 首页>>代码示例>>C#>>正文


C# IResource.GetReadStream方法代码示例

本文整理汇总了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);
			}
		}
开发者ID:ringostarr80,项目名称:WebDav.NET,代码行数:73,代码来源:DownloadForm.cs


注:本文中的IResource.GetReadStream方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。