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


C# Snapshot.Remove方法代码示例

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


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

示例1: UpdateSnapshot


//.........这里部分代码省略.........

					bool nothingToProcess = false;
					if (currentTime > LastTimestamp.Time)
					{
						packets = GetForward(new TimeStamp(currentTime));
					}
					else if (currentTime < LastTimestamp.Time)
					{
						packets = GetBackward(new TimeStamp(currentTime));
						isBackward = true;
					}
					else
					{
						nothingToProcess = true;
					}

					LastTimestamp = new TimeStamp(currentTime);

					if (nothingToProcess && !forceUpdate)
					{
						return;
					}
				}

				if (AddressRange.Max < AddressRange.Min)
				{
					return;
				}

				// Create final list, removing allocations as frees are encountered
				if (packets != null)
				{
					int index = 0;
					foreach (var pair in packets)
					{
						// On a full rebuild, if there's a position specified in
						// the snapshot, only go up to that position
						if (forceFullRebuild && snapshot.Position > 0)
						{
							if (index > snapshot.Position)
							{
								break;
							}
						}

						// TODO: Can allocation and free processing be combined?
						// They should be exact opposites of each other
						if (pair.Value is Allocation)
						{
							Allocation allocation = pair.Value as Allocation;

							if (!isBackward)
							{
								MemoryBlock newBlock = snapshot.Add(
									allocation, AddressRange.Min, AddressWidth);
							}
							else
							{
								snapshot.Remove(allocation.Address);
							}
						}
						else
						{
							Free free = pair.Value as Free;

							if (snapshot.Find(free.Address) != null)
							{
								MemoryBlock removedBlock = snapshot.Remove(free.Address);
								if (removedBlock != null)
								{
									removedBlock.Allocation.AssociatedFree = free;
									free.AssociatedAllocation = removedBlock.Allocation;
								}
							}
							else
							{
								if (isBackward)
								{
									MemoryBlock newBlock = snapshot.Add(
										free.AssociatedAllocation, AddressRange.Min, AddressWidth);
								}
							}
						}

						index++;
					}

					if (!forceFullRebuild || snapshot.Position == 0)
					{
						snapshot.Position = Position;
					}
				}

				if (Rebuilt != null)
				{
					EventArgs e = new EventArgs();
					Rebuilt.Invoke(this, e);
				}
			} //);
		}
开发者ID:dakahler,项目名称:alloclave,代码行数:101,代码来源:History.cs


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