コード例 #1
0
ファイル: SyncFlag.cs プロジェクト: shahabhijeet/aznetsdk
        internal static string ToSerializedValue(this SyncFlag value)
        {
            switch (value)
            {
            case SyncFlag.DATA:
                return("DATA");

            case SyncFlag.METADATA:
                return("METADATA");

            case SyncFlag.CLOSE:
                return("CLOSE");
            }
            return(null);
        }
コード例 #2
0
        public Task AdvanceTo(int position)
        {
            var flag = new SyncFlag(position);

            Interlocked.Exchange(ref _syncFlag, flag)?.Canceled();
            if (position == _syncPosition)
            {
                return(Task.CompletedTask);
            }
            else if (position < _syncPosition)
            {
                throw new InvalidOperationException("Thread is already at positon " + _syncPosition);
            }

            _syncEvent.Set();

            return(flag.Wait());
        }
コード例 #3
0
        public async Task AdvanceAndFreezeBefore(int position)
        {
            var flag = new SyncFlag(position);

            Interlocked.Exchange(ref _syncFlag, flag)?.Canceled();
            if (position <= _syncPosition)
            {
                throw new InvalidOperationException("Thread is already at positon " + _syncPosition);
            }

            _syncEvent.Set();

            var reached = flag.Wait();
            var frozen  = _current.Frozen();

            await Task.WhenAny(reached, frozen);

            Assert.AreEqual(TaskStatus.WaitingForActivation, reached.Status);
            Assert.AreEqual(TaskStatus.RanToCompletion, frozen.Status);
        }
コード例 #4
0
ファイル: EntityDefine.cs プロジェクト: yzx4036/BodyET
 public PropertyDefineAttribute(SyncFlag flag = SyncFlag.OwnClient)
 {
     //this.Id = id;
     this.Flag = flag;
 }