コード例 #1
0
            protected override void DisposeNative()
            {
                base.DisposeNative();

                if (ShouldRecreate)
                {
                    NewInstance = new ImmediateRecreationObject(Handle, false);
                }
            }
コード例 #2
0
        public void EnsureConcurrencyResultsInCorrectDeregistration()
        {
            var handle = (IntPtr)446;

            var obj = new ImmediateRecreationObject(handle, true);

            Assert.Null(obj.NewInstance);
            Assert.Equal(obj, SKObject.instances[handle]?.Target);

            obj.Dispose();
            Assert.True(SKObject.GetInstance <ImmediateRecreationObject>(handle, out _));

            var newObj = obj.NewInstance;

            Assert.NotEqual(obj, SKObject.instances[handle]?.Target);
            Assert.Equal(newObj, SKObject.instances[handle]?.Target);

            newObj.Dispose();
            Assert.False(SKObject.GetInstance <ImmediateRecreationObject>(handle, out _));
        }