Exemplo n.º 1
0
 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");
        }
Exemplo n.º 6
0
 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);
     }
 }
Exemplo n.º 7
0
 internal NativeHeapMemoryBlock(int size)
 {
     _data = new DisposableData(size);
     _size = size;
 }
Exemplo n.º 8
0
 public void Dispose()
 {
     DisposableData?.Dispose();
 }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
 internal unsafe MemoryMappedFileBlock(IDisposable accessor, SafeBuffer safeBuffer, long offset, int size)
 {
     _data = new DisposableData(accessor, safeBuffer, offset);
     _size = size;
 }