コード例 #1
0
        public void BeginInitEndInit_WithISupportInitializeNotificationDataSourceInitialized_DoesNotWaitForDataSourceInitialize()
        {
            var dataSource = new ISupportInitializeNotificationDataSource {
                IsInitializedResult = true
            };

            using var bindingSource = new BindingSource(dataSource, nameof(ISupportInitializeNotificationDataSource.Member));
            ISupportInitializeNotification source = bindingSource;
            int          callCount = 0;
            EventHandler handler   = (sender, e) =>
            {
                callCount++;
                Assert.Same(source, sender);
                Assert.Equal(EventArgs.Empty, e);
            };

            source.Initialized += handler;

            source.BeginInit();
            Assert.False(source.IsInitialized);
            Assert.Equal(0, callCount);

            source.EndInit();
            Assert.True(source.IsInitialized);
            Assert.Equal(1, callCount);

            // Call again.
            source.EndInit();
            Assert.True(source.IsInitialized);
            Assert.Equal(2, callCount);
        }
コード例 #2
0
        public void BeginInitEndInit_Invoke_Success()
        {
            using var bindingSource = new BindingSource();
            ISupportInitializeNotification source = bindingSource;

            source.BeginInit();
            Assert.False(source.IsInitialized);

            source.EndInit();
            Assert.True(source.IsInitialized);
        }
コード例 #3
0
        public void BeginInitEndInit_SetDataSourceInInit_Success(object newDataSource)
        {
            var dataSource = new ISupportInitializeNotificationDataSource {
                IsInitializedResult = false
            };

            using var bindingSource = new BindingSource(dataSource, nameof(ISupportInitializeNotificationDataSource.Member));
            ISupportInitializeNotification source = bindingSource;
            int          callCount = 0;
            EventHandler handler   = (sender, e) =>
            {
                callCount++;
                Assert.Same(source, sender);
                Assert.Equal(EventArgs.Empty, e);
            };

            source.Initialized     += handler;
            dataSource.Initialized += (sender, e) =>
            {
                ((BindingSource)source).DataSource = newDataSource;
            };

            source.BeginInit();
            Assert.False(source.IsInitialized);
            Assert.Equal(0, callCount);

            // Call the source init - should not initialize and should instead wait for
            // the data source initialization.
            source.EndInit();
            Assert.False(source.IsInitialized);
            Assert.Equal(0, callCount);

            // Then, call the data source init.
            dataSource.EndInit();
            Assert.True(source.IsInitialized);
            Assert.Equal(1, callCount);

            // Call again.
            source.EndInit();
            Assert.True(source.IsInitialized);
            Assert.Equal(2, callCount);
        }