Esempio n. 1
0
 private void btnfirst_Click(object sender, RoutedEventArgs e)
 {
     if (FirstEvent != null)
     {
         FirstEvent.Invoke();
     }
 }
Esempio n. 2
0
        /// <summary>
        /// generate events asyncronously with random delay
        /// </summary>
        public void Working()
        {
            int n = rnd.Next(5, 10);      //adding more randomness

            StartWork?.Invoke(textBox);
            Thread.Sleep(rnd.Next(30 - n, 40 + n) * 100);

            int m = rnd.Next(20, 50);

            while (!IsClicked)
            {
                switch (rnd.Next(1, 5))
                {
                case 1: { FirstEvent?.Invoke(textBox); break; }

                case 2: { SecondEvent?.Invoke(textBox); break; }

                case 3: { ThirdEvent?.Invoke(textBox); break; }

                case 4: { FourthEvent?.Invoke(textBox); break; }

                default: break;
                }
                Thread.Sleep(rnd.Next(100 - n, 100 + m) * 100);
            }
            //StopWork?.Invoke(textBox);
            StopCalled = true;
        }
        public IEnumerable <FirstEvent> Extend(RunImport run)
        {
            if (run.Logs == null)
            {
                return(Enumerable.Empty <FirstEvent>());
            }

            var firstEverything = new List <FirstEvent>();
            var advancements    = run.Events.Where(x => x.Type == EventTypes.Advancement).Select(x => x.Value).Distinct();

            foreach (var advancement in advancements)
            {
                var fastest = run.Events
                              .Where(x => (x.Type == EventTypes.Advancement) &&
                                     x.Value == advancement)
                              .OrderBy(x => x.Timestamp)
                              .First();

                var first = new FirstEvent
                {
                    Name     = advancement,
                    PlayerId = fastest.PlayerId,
                    Time     = fastest.Timestamp
                };

                firstEverything.Add(first);
            }

            return(firstEverything);
        }
Esempio n. 4
0
        public void OnGet()
        {
            var event1 = new FirstEvent
            {
                MyID      = Guid.NewGuid(),
                Timestamp = DateTime.Now
            };

            _eventPublisherService.Emit(event1);

            var event2 = new SecondEvent(new MyObject {
                ID = Guid.NewGuid(), Name = "Francesc"
            })
            {
                Timestamp = DateTime.Now
            };

            _eventPublisherService.Emit(event2);
        }
Esempio n. 5
0
 public void Handle(IViewContext context, FirstEvent domainEvent)
 {
     Thread.Sleep(FirstEventSleepMilliseconds);
 }
Esempio n. 6
0
        /// <summary>
        /// トラックにイベントを挿入(イベントはあらかじめ生成しておく)
        /// pEventをpTargetの直後に入れる。時刻が不正な場合、自動訂正する。
        /// pTarget==NULLの場合、トラックの最初に入れる。
        /// </summary>
        /// <param name="insertEvent">挿入するイベント</param>
        /// <param name="targetEvent">挿入ターゲット</param>
        internal void InsertSingleEventAfter(Event insertEvent, Event targetEvent)
        {
            /* イベントが既に他のトラックに属している場合、却下する */
            if (insertEvent.Parent != null || insertEvent.PrevEvent != null || insertEvent.NextEvent != null)
            {
                throw new MIDIDataLibException("イベントは既に他のトラックに属しています。");
            }
            /* EOTを二重に入れるのを防止 */
            if (LastEvent != null)
            {
                if (LastEvent.Kind == Kind.EndofTrack &&
                    insertEvent.Kind == Kind.EndofTrack)
                {
                    return;
                }
            }
            /* SMFフォーマット1の場合 */
            if (Parent != null)
            {
                if (Parent.Format == Format.Format1)
                {
                    /* コンダクタートラックにMIDIEventを入れるのを防止 */
                    if (ReferenceEquals(Parent.FirstTrack, this))
                    {
                        if (insertEvent.IsMIDIEvent)
                        {
                            throw new MIDIDataLibException("コンダクタートラックにMIDIEventを挿入することはできません。");
                        }
                    }
                    /* 非コンダクタートラックにテンポ・拍子などを入れるのを防止 */
                    else
                    {
                        if (insertEvent.Kind == Kind.Tempo ||
                            insertEvent.Kind == Kind.SMPTEOffset ||
                            insertEvent.Kind == Kind.TimeSignature ||
                            insertEvent.Kind == Kind.KeySignature)
                        {
                            throw new MIDIDataLibException("非コンダクタートラックにテンポ・拍子などを挿入することはできません。");
                        }
                    }
                }
            }

            /* pTargetの直後に挿入する場合 */
            if (targetEvent != null)
            {
                /* ターゲットが所属トラックが異なる場合却下 */
                if (targetEvent.Parent != this)
                {
                    throw new MIDIDataLibException("ターゲットの所属トラックが異なります。");
                }
                /* EOTの直後に挿入しようとした場合、EOTを移動しEOTの直前に挿入 */
                if (targetEvent.Kind == Kind.EndofTrack &&
                    targetEvent.NextEvent == null)
                {
                    /* EOTを正しく移動するため、先に時刻の整合調整 */
                    if (targetEvent._time < insertEvent._time)
                    {
                        targetEvent._time = insertEvent._time;
                    }
                    targetEvent.SetPrevEvent(insertEvent);
                }
                /* EOT以外の直後に挿入しようとした場合、時刻の整合さえすれば可能(pTarget==NULL) */
                else
                {
                    if (LastEvent.Kind == Kind.EndofTrack)
                    {
                        if (LastEvent._time < insertEvent._time)
                        {
                            LastEvent._time = insertEvent._time;
                        }
                    }
                    targetEvent.SetNextEvent(insertEvent);
                }
            }
            /* トラックの最初に挿入する場合(pTarget==NULL) */
            else if (FirstEvent != null)
            {
                /* EOTの直前となる場合は、EOTの時刻を調整する */
                if (FirstEvent.Kind == Kind.EndofTrack &&
                    FirstEvent.NextEvent == null)
                {
                    if (FirstEvent._time < insertEvent._time)
                    {
                        FirstEvent._time = insertEvent._time;
                    }
                }
                FirstEvent.SetPrevEvent(insertEvent);
            }
            /* 空トラックに挿入する場合 */
            else
            {
                insertEvent.Parent            = this;
                insertEvent.NextEvent         = null;
                insertEvent.PrevEvent         = null;
                insertEvent.NextSameKindEvent = null;
                insertEvent.PrevSameKindEvent = null;
                FirstEvent = insertEvent;
                LastEvent  = insertEvent;
                NumEvent++;
            }
        }
Esempio n. 7
0
 private void OnFirst(FirstEvent obj)
 {
     CurrentState = 1;
 }