public void WindowsFormsSynchronizationContext_Dispose_MultipleTimes_Success()
        {
            var context   = new WindowsFormsSynchronizationContext();
            int callCount = 0;
            SendOrPostCallback callback = (state) => callCount++;

            context.Dispose();
            context.Send(callback, new object());
            Assert.Equal(0, callCount);

            // Call again.
            context.Dispose();
            context.Send(callback, new object());
            Assert.Equal(0, callCount);
        }
        public void WindowsFormsSynchronizationContext_Post_InvokeDisposed_Nop(object state)
        {
            int callCount = 0;
            SendOrPostCallback callback = (actualState) => callCount++;
            var context = new WindowsFormsSynchronizationContext();

            context.Dispose();

            context.Post(callback, state);
            Assert.Equal(0, callCount);

            // Call again.
            context.Post(callback, state);
            Assert.Equal(0, callCount);
        }
예제 #3
0
        private static void RunAppThread(object state)
        {
            var ownMessageLoopMainForm = new Form();

            ownMessageLoopMainForm.ShowInTaskbar = false;
            ownMessageLoopMainForm.Width         = 0;
            ownMessageLoopMainForm.Height        = 0;
            ownMessageLoopMainForm.Load         += ownerForm_Load;

            Application.Run(ownMessageLoopMainForm);

            if (syncContext != null)
            {
                syncContext.Dispose();
                syncContext = null;
            }
        }
예제 #4
0
        protected virtual void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (disposing)
                {
                    if (_threadInitializedEvent != null)
                    {
                        _threadInitializedEvent.Dispose();
                        _threadInitializedEvent = null;
                    }

                    if (_formsSyncContext != null)
                    {
                        _formsSyncContext.Dispose();
                        _formsSyncContext = null;
                    }
                }

                _disposed = true;
            }
        }
예제 #5
0
        protected virtual void Dispose(bool disposing)
        {
            if (!disposed)
            {
                if (disposing)
                {
                    if (threadInitializedEvent != null)
                    {
                        threadInitializedEvent.Dispose();
                        threadInitializedEvent = null;
                    }

                    if (formsSyncContext != null)
                    {
                        formsSyncContext.Dispose();
                        formsSyncContext = null;
                    }
                }

                disposed = true;
            }
        }