예제 #1
0
        public void IChangeToken_ConfigurationReloadToken_OnChange()
        {
            var          isChangeCallbackInvoke = false;
            IChangeToken token = new ConfigurationReloadToken();

            token.RegisterChangeCallback(o => isChangeCallbackInvoke = true, null);
            Assert.False(token.HasChanged);
            Assert.False(isChangeCallbackInvoke);
            ((ConfigurationReloadToken)token).OnReload();
            Assert.True(token.HasChanged);
            Assert.True(isChangeCallbackInvoke);
        }
예제 #2
0
        public void IChangeToken_ConfigurationReloadToken_CallCancleAgain()
        {
            var token             = new ConfigurationReloadToken();
            var isCallbackInvoked = false;

            token.RegisterChangeCallback(o => isCallbackInvoked = true, null);
            token.OnReload();
            Wait();
            Assert.True(isCallbackInvoked);
            Assert.True(token.HasChanged);

            isCallbackInvoked = false;
            var isCallbackInvokedAgain = false;

            token.RegisterChangeCallback(o => isCallbackInvokedAgain = true, null);
            Assert.True(token.HasChanged);
            Wait();
            token.OnReload();
            // 还是会调用第二次
            Assert.True(isCallbackInvokedAgain);
            // 新注册的回调还是会调用的
            Assert.True(isCallbackInvokedAgain);
        }