예제 #1
0
        public void NotFailWhenMagicAPIErrorOccured()
        {
            var q = new APIObject(5);

            MagicAPI.Free(5);
            q.Dispose();
        }
예제 #2
0
 public void HaveFinalizer()
 {
     CreateApiObject(4);
     GC.Collect();
     Thread.Sleep(1000);
     Assert.False(MagicAPI.Contains(4));
 }
예제 #3
0
 /// <summary>
 /// Освободить память,
 /// выделенную API
 /// </summary>
 /// <param name="disposing">
 /// Флаг для указания
 /// откуда была вызвана функция:
 /// true - явным образом
 /// false - из финализатора
 /// </param>
 protected virtual void Dispose(bool disposing)
 {
     if (!disposedValue)
     {
         MagicAPI.Free(this.n);
         disposedValue = true;
     }
 }
예제 #4
0
 public void Dispose(int value)
 {
     if (!isDisposed)
     {
         MagicAPI.Free(value);
     }
     isDisposed = true;
 }
예제 #5
0
 private void MyOwnDispose()
 {
     if (_state != null)
     {
         MagicAPI.Free((int)_state);
         _state = null;
     }
 }
예제 #6
0
 public void DisposeDontCrashFinalizer()
 {
     CreateAndDisposeApiObject(42);
     GC.Collect();
     Thread.Sleep(1000);
     Assert.False(MagicAPI.Contains(42));
     Assert.False(MagicAPI.Contains(100500));
 }
예제 #7
0
 public void FreeResourcesInUsing()
 {
     using (var q = new APIObject(2))
     {
         Assert.True(MagicAPI.Contains(2));
     }
     Assert.False(MagicAPI.Contains(2));
 }
예제 #8
0
 public void Dispose()
 {
     foreach (var allocatedId in allocatedIds)
     {
         MagicAPI.Free(allocatedId);
     }
     allocatedIds.Clear();
 }
예제 #9
0
 public void Dispose()
 {
     if (!disposedValue)
     {
         MagicAPI.Free(pupaAndLupa);
         disposedValue = true;
     }
 }
예제 #10
0
        public void FreeResourcesWhenDisposeCalled()
        {
            var q = new APIObject(1);

            Assert.True(MagicAPI.Contains(1));
            q.Dispose();
            Assert.False(MagicAPI.Contains(1));
        }
 private void Dispose(bool fromDispose)
 {
     if (!_isDisposed)
     {
         MagicAPI.Free(_id);
         _isDisposed = true;
     }
 }
예제 #12
0
 public void Dispose()
 {
     if (!isDisposed)
     {
         MagicAPI.Free(value);
     }
     GC.SuppressFinalize(this);
     isDisposed = true;
 }
예제 #13
0
        public void DontFailWhenTwoDisposeAreCalled()
        {
            var q = new APIObject(3);

            Assert.True(MagicAPI.Contains(3));
            q.Dispose();
            q.Dispose();
            Assert.False(MagicAPI.Contains(3));
        }
예제 #14
0
 protected virtual void Dispose(bool disposing)
 {
     if (disposing)
     {
         if (MagicAPI.Contains(i))
         {
             MagicAPI.Free(i);
         }
     }
 }
예제 #15
0
        public void Dispose(bool disposing)
        {
            if (disposed)
            {
                return;
            }

            MagicAPI.Free(n);
            disposed = true;
        }
예제 #16
0
        protected virtual void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    MagicAPI.Free(id);
                }

                disposedValue = true;
            }
        }
예제 #17
0
        protected virtual void Dispose(bool disposing)
        {
            if (!isDisposed)
            {
                if (disposing)
                {
                }

                MagicAPI.Free(id);
                isDisposed = true;
            }
        }
예제 #18
0
 protected virtual void Dispose(bool fromDisposeMethod)
 {
     if (!isDisposed)
     {
         try
         {
             MagicAPI.Free(resource);
             isDisposed = true;
         }
         catch (ArgumentException)
         {
         }
     }
 }
예제 #19
0
 public APIObject(int number)
 {
     allocatedIds.Add(number);
     MagicAPI.Allocate(number);
 }
예제 #20
0
 public APIObject(int i)
 {
     this.i = i;
     MagicAPI.Allocate(i);
 }
예제 #21
0
 public APIObject(int resource)
 {
     this.resource = resource;
     MagicAPI.Allocate(resource);
 }
예제 #22
0
 public APIObject(int x)
 {
     _state = x;
     MagicAPI.Allocate(x);
 }
예제 #23
0
        public APIObject(int n)
        {
            this.n = n;

            MagicAPI.Allocate(n);
        }
예제 #24
0
        private bool disposedValue = false; // Для определения избыточных вызовов

        public APIObject(int number)
        {
            this.pupaAndLupa = number;
            MagicAPI.Allocate(number);
        }
예제 #25
0
 public APIObject(int id)
 {
     this.id = id;
     MagicAPI.Allocate(id);
 }
예제 #26
0
 public APIObject(int value)
 {
     this.value = value;
     MagicAPI.Allocate(value);
 }