Add() 공개 메소드

Wrap a callback and returns its wrapper. If the callback is already wrapped then the existing wrapper is returned.
public Add ( JET_CALLBACK callback ) : JetCallbackWrapper
callback JET_CALLBACK The callback to add.
리턴 JetCallbackWrapper
예제 #1
0
        public void VerifyAddingSameCallbackReturnsSameWrapper()
        {
            JET_CALLBACK callback = CreateCallback();

            var callbackWrappers = new CallbackWrappers();
            var wrapper = callbackWrappers.Add(callback);

            Assert.AreEqual(wrapper, callbackWrappers.Add(callback));
        }
예제 #2
0
        public void VerifyAddingCallbackReturnsWrapper()
        {
            JET_CALLBACK callback = CreateCallback();

            var callbackWrappers = new CallbackWrappers();
            var wrapper = callbackWrappers.Add(callback);

            Assert.IsNotNull(callbackWrappers.Add(callback));
        }
예제 #3
0
 /// <summary>
 /// Create a new wrapped callback.
 /// </summary>
 /// <param name="callbackWrappers">The CallbackWrappers to add the callback to.</param>
 private static void CreateCallbackWrapper(CallbackWrappers callbackWrappers)
 {
     callbackWrappers.Add(CreateCallback());
 }
예제 #4
0
        public void VerifyWrapperIsCollectedWhenCallbackIsCollected()
        {
            JET_CALLBACK callback = CreateCallback();
            var callbackRef = new WeakReference(callback);

            var callbackWrappers = new CallbackWrappers();
            var wrapperRef = new WeakReference(callbackWrappers.Add(callback));

            callback = null;

            RunFullGarbageCollection();
            callbackWrappers.Collect();
            RunFullGarbageCollection();

            Assert.IsFalse(callbackRef.IsAlive);
            Assert.IsFalse(wrapperRef.IsAlive);

            // Avoid premature collection of this objects
            GC.KeepAlive(callbackWrappers);
        }
예제 #5
0
        public void VerifyNativeCallbackIsNotGarbageCollected()
        {
            JET_CALLBACK callback = CreateCallback();

            var callbackWrappers = new CallbackWrappers();
            JetCallbackWrapper wrapper = callbackWrappers.Add(callback);
            WeakReference weakRef = new WeakReference(wrapper.NativeCallback);
            RunFullGarbageCollection();
            Assert.IsTrue(weakRef.IsAlive);
            GC.KeepAlive(wrapper);
        }