public static IEnumerable <int> Fetch() { using var data = new DisposableData(); for (var i = 10; i < 20; i++) { yield return(i); } }
/// <summary> /// Builds the DisposableData instance. /// </summary> /// <param name="args"> The arguments containing the DisposableData instance. </param> protected override void InternalBuild(params Func <object>[] args) { DisposableData <T> data = args[0]?.Invoke() as DisposableData <T>; if (data == null) { InternalInvokeError("DisposableData is null"); } else { InternalInvokeSuccess(data); data.Dispose(); } }
public void Dispose_WithUsingWasNotFinalized() { //Act var id = Guid.NewGuid(); var actual = new DisposableData(); m_tracker.TryAdd(id, actual); using (var target = new TestDisposableObjectWithFinalizer(id)) { }; //Assert actual.WasDisposed.Should().BeTrue(); actual.WasFinalized.Should().BeFalse(); }
public void Dispose_WithExplicitCallWasNotFinalized() { //Arrange var id = Guid.NewGuid(); var actual = new DisposableData(); m_tracker.TryAdd(id, actual); //Act var target = new TestDisposableObjectWithFinalizer(id); target.Dispose(); //Assert actual.WasDisposed.Should().BeTrue(); actual.WasFinalized.Should().BeFalse(); }
public void Dispose_NoDisposeWasFinalized() { //Arrange var id = Guid.NewGuid(); var actual = new DisposableData(); m_tracker.TryAdd(id, actual); //Act { var target = new TestDisposableObjectWithFinalizer(id); target = null; }; GC.Collect(); GC.WaitForPendingFinalizers(); //Assert actual.WasDisposed.Should().BeFalse("Was disposed"); actual.WasFinalized.Should().BeTrue("Not finalized"); }
public void Remove(TData alert) { if (alert == null) { return; } alert.OnBeRemoved(); Data.Remove(alert); if (alert.Type == AlertType.Interaction) { InteractionData.Remove(alert); Callback_OnInteractionChange?.Invoke(alert); } else if (alert.Type == AlertType.Disposable) { DisposableData.Remove(alert); Callback_DisposableChange?.Invoke(alert); } else if (alert.Type == AlertType.Continue) { ContinueData.Remove(alert); Callback_ContinueChange?.Invoke(alert); } //移除Article foreach (var item in alert.SelfArticle) { ArticleMgr.RemoveArticle(item); } foreach (var item in alert.TargetArticle) { ArticleMgr.RemoveArticle(item); } if (BaseGlobal.IsUnReadData) { Callback_OnRemoved?.Invoke(alert); } }
internal NativeHeapMemoryBlock(int size) { _data = new DisposableData(size); _size = size; }
public void Dispose() { DisposableData?.Dispose(); }
private TData Add(string tdid, BaseUnit cast = null, Callback <TData> action = null, bool isAutoTrigger = false) { if (!TDLuaMgr.Contains(tdid)) { if (CommonAlert == tdid) { CLog.Error("没有:{0},请手动添加CommonAlert", tdid); } else { CLog.Error("没有:{0},请手动添加Alert", tdid); } return(null); } TData sourceAlert = TDLuaMgr.Get <TData>(tdid); sourceAlert.Cast = cast ? cast : LocalPlayer; sourceAlert.AlertMgr = this; //判断通知是否可以被合并 var finalAlert = CanMerge(sourceAlert); if (finalAlert != null) { finalAlert.OnMerge(); Callback_OnMerge?.Invoke(finalAlert); } else { finalAlert = sourceAlert.Copy <TData>(); finalAlert.ID = IDUtil.Gen(); finalAlert.OnBeAdded(SelfBaseUnit); Data.Add(finalAlert); if (finalAlert.Type == AlertType.Interaction) { //推送最近一次的谈判信息 if (ArticleMgr.IsStarNegotiation) { ArticleMgr.PushNagotiationToAlert(finalAlert); } InteractionData.Add(finalAlert); Callback_OnInteractionChange?.Invoke(finalAlert); } else if (finalAlert.Type == AlertType.Disposable) { DisposableData.Add(finalAlert); Callback_DisposableChange?.Invoke(finalAlert); } else if (finalAlert.Type == AlertType.Continue) { ContinueData.Add(finalAlert); Callback_ContinueChange?.Invoke(finalAlert); } action?.Invoke(finalAlert); if (BaseGlobal.IsUnReadData) { Callback_OnAdded?.Invoke(finalAlert); } } if (finalAlert.IsAutoTrigger || isAutoTrigger) { finalAlert.DoLeftClickTrigger(); } return(finalAlert); }
internal unsafe MemoryMappedFileBlock(IDisposable accessor, SafeBuffer safeBuffer, long offset, int size) { _data = new DisposableData(accessor, safeBuffer, offset); _size = size; }