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


C# IProgress.ThrowIfCancellationRequested方法代码示例

本文整理汇总了C#中IProgress.ThrowIfCancellationRequested方法的典型用法代码示例。如果您正苦于以下问题:C# IProgress.ThrowIfCancellationRequested方法的具体用法?C# IProgress.ThrowIfCancellationRequested怎么用?C# IProgress.ThrowIfCancellationRequested使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IProgress的用法示例。


在下文中一共展示了IProgress.ThrowIfCancellationRequested方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: foreach

		unsafe void IProgressTask.Execute(IProgress progress) {
			this.progress = progress;
			if (infos.Length == 0)
				return;

			uint maxSize = infos.Max(a => a.Size);
			var buf = new byte[maxSize];
			byte[] buf2 = null;
			foreach (var info in infos) {
				progress.ThrowIfCancellationRequested();
				progress.SetDescription(Path.GetFileName(info.Filename));

				ProcessMemoryUtils.ReadMemory(info.ProcessHandle, info.Address, buf, 0, (int)info.Size);
				progress.ThrowIfCancellationRequested();
				currentProgress++;
				progress.SetTotalProgress(currentProgress);

				byte[] data = buf;
				int dataSize = (int)info.Size;
				if (info.MemoryLayout) {
					if (buf2 == null)
						buf2 = new byte[buf.Length];
					data = buf2;
					progress.ThrowIfCancellationRequested();
					Array.Clear(buf2, 0, dataSize);
					WritePEFile(buf, buf2, dataSize, out dataSize);
				}

				var file = File.Create(info.Filename);
				try {
					file.Write(data, 0, dataSize);
					currentProgress++;
					progress.SetTotalProgress(currentProgress);
				}
				catch {
					file.Dispose();
					try { File.Delete(info.Filename); }
					catch { }
					throw;
				}
				finally {
					file.Dispose();
				}
			}
		}
开发者ID:levisre,项目名称:dnSpy,代码行数:45,代码来源:PEFilesSaver.cs

示例2: Execute

		public void Execute(IProgress progress) {
			for (int i = 0; i < documentsToLoad.Length; i++) {
				progress.ThrowIfCancellationRequested();
				var f = documentsToLoad[i];
				progress.SetTotalProgress(i);
				progress.SetDescription(GetDescription(f.Info));
				Load(f);
			}

			progress.SetTotalProgress(documentsToLoad.Length);
		}
开发者ID:manojdjoshi,项目名称:dnSpy,代码行数:11,代码来源:DsDocumentLoader.cs

示例3: Execute

		public void Execute(IProgress progress) {
			progress.SetDescription(filename);
			var file = File.Create(filename);
			try {
				var buf = new byte[BUF_SIZE];
				ulong offs = start;
				long currentProgress = 0;
				while (offs <= end) {
					progress.ThrowIfCancellationRequested();
					progress.SetTotalProgress(currentProgress);
					currentProgress++;
					ulong left = end - start + 1;
					if (left == 0)
						left = ulong.MaxValue;
					int size = left > (ulong)buf.Length ? buf.Length : (int)left;
					doc.Read(offs, buf, 0, size);
					file.Write(buf, 0, size);
					offs += (ulong)size;
					if (offs == 0)
						break;
				}
				progress.SetTotalProgress(currentProgress);
			}
			catch {
				file.Dispose();
				try { File.Delete(filename); }
				catch { }
				throw;
			}
			finally {
				file.Dispose();
			}
		}
开发者ID:arkanoid1,项目名称:dnSpy,代码行数:33,代码来源:HexBoxCommands.cs

示例4: Execute

		public void Execute(IProgress progress) {
			var buf = new byte[64 * 1024];
			for (int i = 0; i < fileInfos.Length; i++) {
				progress.ThrowIfCancellationRequested();
				var info = fileInfos[i];
				progress.SetDescription(info.Item2);
				progress.SetTotalProgress(i);
				Directory.CreateDirectory(Path.GetDirectoryName(info.Item2));
				var file = File.Create(info.Item2);
				try {
					info.Item1.Position = 0;
					for (;;) {
						int len = info.Item1.Read(buf, 0, buf.Length);
						if (len <= 0) {
							if (info.Item1.Position != info.Item1.Length)
								throw new Exception("Could not read all bytes");
							break;
						}
						file.Write(buf, 0, len);
					}
				}
				catch {
					file.Dispose();
					try { File.Delete(info.Item2); }
					catch { }
					throw;
				}
				finally {
					file.Dispose();
				}
			}
			progress.SetTotalProgress(fileInfos.Length);
		}
开发者ID:arkanoid1,项目名称:dnSpy,代码行数:33,代码来源:SaveResources.cs

示例5: Execute

		public void Execute(IProgress progress) {
			progress.SetDescription(filename);
			var file = File.Create(filename);
			try {
				var buf = new byte[BUF_SIZE];
				var pos = span.Start;
				long currentProgress = 0;
				while (pos < span.End) {
					progress.ThrowIfCancellationRequested();
					progress.SetTotalProgress(currentProgress);
					currentProgress++;
					ulong left = (span.End - pos).ToUInt64();
					if (left == 0)
						left = ulong.MaxValue;
					int size = left > (ulong)buf.Length ? buf.Length : (int)left;
					buffer.ReadBytes(pos, buf, 0, size);
					file.Write(buf, 0, size);
					pos += (ulong)size;
				}
				progress.SetTotalProgress(currentProgress);
			}
			catch {
				file.Dispose();
				try { File.Delete(filename); }
				catch { }
				throw;
			}
			finally {
				file.Dispose();
			}
		}
开发者ID:manojdjoshi,项目名称:dnSpy,代码行数:31,代码来源:HexCommandOperations.cs


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