private void NotCompleted(OperationCompletedTracker tracker)
 {
     // This is in a helper method to ensure the JIT doesn't artifically extend the lifetime of the operation.
     AsyncOperationManager.SynchronizationContext = tracker;
     AsyncOperation operation = AsyncOperationManager.CreateOperation(new object());
     Assert.False(tracker.OperationDidComplete);
 }
        public void Finalizer_OperationNotCompleted_CompletesOperation()
        {
            RemoteExecutor.Invoke(() =>
            {
                var tracker = new OperationCompletedTracker();
                NotCompleted(tracker);

                GC.Collect();
                GC.WaitForPendingFinalizers();

                Assert.True(tracker.OperationDidComplete);
            }).Dispose();
        }