public void TestDeleteEvents() { EventHolder eventHolder = new EventHolder(); eventHolder.AddEvent(new DateTime(2013, 04, 17, 18, 0, 0), "Football Game", "Stadium"); eventHolder.DeleteEvents("Football Game"); Assert.AreEqual(true, Messages.Output.EndsWith("1 events deleted" + Environment.NewLine)); }
public void DeleteEvent(EventHolder eventToDelete) { executeQuery("DELETE FROM Events WHERE eventId = " + eventToDelete.eventId + " AND eventname = '" + eventToDelete.name + "' AND levelId = " + eventToDelete.levelId + ";"); }
public void RegisterAll(object instance) { var type = instance.GetType(); foreach (var listenerMethod in type.GetMethods(ReflectUtil.STATIC_INSTANCE_FLAGS)) { var eventHandlerAttrs = listenerMethod.GetCustomAttributes(typeof(SubscribeEvent), false); if (eventHandlerAttrs.Length == 0) { continue; } var eventHandlerAttr = (SubscribeEvent)eventHandlerAttrs[0]; var eventTarget = eventHandlerAttr.DelegateOwner; var targetFieldName = eventHandlerAttr.DelegateName; lock (_handlerMap) { var holder = GetHolder(eventTarget, targetFieldName); EventInfo eventInfo; List <Delegate> methodDelegates; if (holder == null) { var eventTargetType = (Type)(eventTarget is Type ? eventTarget : eventTarget.GetType()); eventInfo = eventTargetType.GetEvent(targetFieldName); holder = new EventHolder { EventInfo = eventInfo, Target = eventTarget }; methodDelegates = new List <Delegate>(); } else { eventTarget = holder.Target; eventInfo = holder.EventInfo; methodDelegates = _handlerMap[holder]; } var methodDelegate = Delegate.CreateDelegate( eventInfo.EventHandlerType, instance, listenerMethod ); Debug.WriteLine($"Registered '{type}::{listenerMethod}'", "EventManager"); eventInfo.AddEventHandler(eventTarget, methodDelegate); methodDelegates.Add(methodDelegate); _handlerMap[holder] = methodDelegates; } } }
public void TestDeleteEvents1() { EventHolder eventHolder = new EventHolder(); eventHolder.AddEvent(new DateTime(2013, 6, 21, 11, 30, 0), "WPF", "Ultimate Hall"); eventHolder.DeleteEvents("WPF"); Assert.AreEqual(true, Messages.Output.EndsWith("1 event(s) deleted" + Environment.NewLine)); }
public void TestAddEvent() { EventHolder eventHolder = new EventHolder(); eventHolder.AddEvent(new DateTime(2013, 06, 01, 21, 20, 0), "JS", "Telerik"); Assert.AreEqual("Event added" + Environment.NewLine, Messages.Output); }
public void TestAddEvent1() { EventHolder eventHolder = new EventHolder(); eventHolder.AddEvent(new DateTime(2013, 4, 21, 11, 30, 0), "3D Graphics", "Ultimate Hall"); Assert.AreEqual("Event added" + Environment.NewLine, eventHolder.Log); }
protected bool QueueAndTriggerEvent(EventHolder eventHolder) { LogProfileEventDispatch("Start QueueAndTriggerEvent"); bool success = false; const int MAX_NUM_PENDING_MESSAGE_EVENTS = 10; Debug.Assert(mQueuedEvents.Count < MAX_NUM_PENDING_MESSAGE_EVENTS); //don't queue anymore if we are backed up with unhandled messages if (mQueuedEvents.Count < MAX_NUM_PENDING_MESSAGE_EVENTS) { lock (mQueuedEvents) { mQueuedEvents.Enqueue(eventHolder); success = true; } //trigger the message received event, or save the message for later if we are busy TriggerNextQueuedEvent(); } LogProfileEventDispatch("End QueueAndTriggerEvent"); return(success); }
public IEnumerable <IEvent> GetAll() { var events = new List <IEvent>(); var path = Path.Combine(_configuration.Path, "EventStore"); var eventFiles = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories); foreach (var eventFile in eventFiles) { var json = File.ReadAllText(eventFile); var target = new EventHolder { Type = typeof(string), Version = EventSourceVersion.Zero, Event = string.Empty }; _serializer.FromJson(target, json); var @event = _serializer.FromJson(target.Type, target.Event) as IEvent; events.Add(@event); } return(events); }
private void Restart() { CoreManager.Instance.ClearAllData(); EventHolder <GameEventType> .Clear(); SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); }
public void BindTest() { EventHolder holder = new EventHolder(); EventCall call = new EventCall(); var handle1 = call.Bind(holder); //イベント Assert.IsTrue(call.Message(TestEvent.Event1)); Assert.AreEqual(holder.value, "event1"); //型が違う Assert.IsFalse(call.Message(TestEvent.Event1, "test")); Assert.AreNotEqual(holder.value, "test"); //イベントを発火 Assert.IsTrue(call.Message(TestEvent.Event2, "event2")); Assert.AreEqual(holder.value, "event2"); //再びバインドするため二回イベント呼ばれる call.Bind(holder); holder.value = ""; Assert.IsTrue(call.Broadcast(TestEvent.Event3, 123)); Assert.AreEqual(holder.value, "123123"); //一つ目のバインドを解除するので一回だけ呼ばれる handle1.Dispose(); holder.value = ""; Assert.IsTrue(call.Broadcast(TestEvent.Event3, 123)); Assert.AreEqual(holder.value, "123"); }
public void TestDeleteEvents1() { EventHolder eventHolder = new EventHolder(); eventHolder.AddEvent(new DateTime(2013, 6, 21, 11, 30, 0), "WPF", "Ultimate Hall"); eventHolder.DeleteEvents("WPF"); Assert.AreEqual(true, eventHolder.Log.EndsWith("1 event(s) deleted" + Environment.NewLine)); }
public void TestListEvents1() { EventHolder eventHolder = new EventHolder(); eventHolder.ListEvents(new DateTime(2013, 4, 21, 11, 30, 0), 10); Assert.AreEqual(true, eventHolder.Log.EndsWith("No events found" + Environment.NewLine)); }
public void AddEvent(EventHolder eventToAdd) { executeQuery("INSERT INTO Events VALUES (" + eventToAdd.eventId + ",'" + eventToAdd.name + "'" + "," + eventToAdd.levelId + ", '" + eventToAdd.description + "')"); }
public void RegisterAll(object instance) { var type = instance.GetType(); foreach (var listenerMethod in type.GetMethods((BindingFlags)0x3C)) { var eventHandlerAttrs = listenerMethod.GetCustomAttributes(typeof(SubscribeEvent), false); if (eventHandlerAttrs.Length < 1) { continue; } var eventHandlerAttr = (SubscribeEvent)eventHandlerAttrs[0]; var eventTarget = eventHandlerAttr.DelegateOwner; var targetFieldName = eventHandlerAttr.DelegateName; lock (_handlerMap) { var holder = GetHolder(eventTarget, targetFieldName); EventInfo eventInfo; List <Delegate> methodDelegates; if (holder == null) { var eventTargetType = (Type)(eventTarget is Type ? eventTarget : eventTarget.GetType()); eventInfo = eventTargetType.GetEvent(targetFieldName); holder = new EventHolder { EventInfo = eventInfo, Target = eventTarget }; methodDelegates = new List <Delegate>(); } else { eventTarget = holder.Target; eventInfo = holder.EventInfo; methodDelegates = _handlerMap[holder]; } var methodDelegate = Delegate.CreateDelegate( eventInfo.EventHandlerType, instance, listenerMethod ); eventInfo.AddEventHandler(eventTarget, methodDelegate); methodDelegates.Add(methodDelegate); _handlerMap[holder] = methodDelegates; } } }
#pragma warning disable 1591 // Xml Comments public IEvent ToEvent(EventHolder eventHolder) { var logicalEventType = _eventMigrationHierarchyManager.GetLogicalTypeFromName(eventHolder.LogicalEventName); var concreteType = _eventMigrationHierarchyManager.GetConcreteTypeForLogicalEventMigrationLevel(logicalEventType, eventHolder.Generation); var @event = CreateInstance(concreteType, eventHolder.AggregateId); _serializer.FromJson(@event, eventHolder.SerializedEvent); @event.Id = eventHolder.Id; return _eventMigratorManager.Migrate(@event); }
private AppBarButton NewButtonWithHandler(AppBarItem item) { var button = NewButton(item); if (EventHolder.ContainsKey(item)) { button.Click += EventHolder[item]; } DebugUtil.Log(() => "Creating button: " + item + " " + button.Visibility); return(button); }
/// <summary> /// Called firstly when SMAPI finished loading of the mod. /// </summary> /// <param name="helper"></param> public override void Entry(IModHelper helper) { // Loads configuration from file. Config conf = Helper.ReadConfig <Config>(); // Initialize InstanceHolder. InstanceHolder.Init(this, conf); // Initialize Logger Logger.Init(this); // Register events. EventHolder.RegisterEvents(Helper.Events); // Registration commands. Helper.ConsoleCommands.Add("joedebug", "Debug command for JoE", OnDebugCommand); // Limit config values. ConfigLimitation.LimitConfigValues(); // Check mod compatibilities. if (ModChecker.IsCoGLoaded(helper)) { Logger.Log("CasksOnGround detected."); IsCoGOn = true; } if (ModChecker.IsCaLoaded(helper)) { Logger.Log("CasksAnywhere detected."); IsCaOn = true; } if (ModChecker.IsCcLoaded(helper)) { Logger.Log("Convenient Chests detected. JoE's CraftingFromChests feature will be disabled and won't patch the game."); Conf.CraftingFromChests = false; IsCcOn = true; } else if (!Conf.SafeMode) { Logger.Log("Start patching using Harmony..."); HarmonyPatched = HarmonyPatcher.Init(); } else { Logger.Log("SafeMode enabled, and won't patch the game."); } helper.WriteConfig(Conf); MineIcons.Init(helper); }
public void EventFiresTwiceIfRegisteredTwice() { // Arrange var eventHolder = new EventHolder(); var subscriber = new Event1Subscriber(eventHolder); subscriber.Subscribe(); subscriber.Subscribe(); // Act eventHolder.TriggerEvent1(); // Assert Assert.AreEqual(2, subscriber.ExecutionCount); }
public override void OnInspectorGUI() { DrawDefaultInspector(); EventHolder script = (EventHolder)target; if (GUILayout.Button("Call Event Action Locally")) { script.TriggerEventLocally(); } if (GUILayout.Button("Call Event")) { script.CallEventTrigger(); } }
public ActionResult CreateEventHolder(EventHolder eventHolder) { try { // TODO: Add insert logic here db.eventHolders.Add(eventHolder); eventHolder.ApplicationUserId = User.Identity.GetUserId(); db.SaveChanges(); return(RedirectToAction("MyEvents")); } catch { return(View()); } }
public void Serialize_ShouldIgnoreEvents() { var instance = new EventHolder(); instance.NothingHappened += () => { }; var context = new Context <EventHolder>(instance); using var document = JsonDocument.Parse(context.Json); var rootElement = document.RootElement; Assert.False( rootElement.TryGetProperty(nameof(EventHolder.NothingHappened), out var _), $"Document should **not** have a property of {nameof(EventHolder.NothingHappened)}" ); }
private async void DoOrdinaryCall() { var subject = new EventHolder(); var count = 1000; var callCount = 0; for (int i = 0; i < count; i++) { subject.NonAsyncEvent += (sender, args) => { Thread.Sleep(_millisecondsTimeout); callCount++; }; } subject.RaiseNonAsync(); Assert.That(callCount, Is.EqualTo(count)); }
public async Task TestAsyncAwait() { var subject = new EventHolder(); var count = 1000; var callCount = 0; for (int i = 0; i < count; i++) { subject.AsyncEvent += async (target, args) => { Thread.Sleep(_millisecondsTimeout); callCount++; }; } await subject.RaiseAsync(); Assert.That(callCount, Is.EqualTo(count)); }
/// <summary> /// Called firstly when SMAPI finished loading of the mod. /// </summary> /// <param name="helper"></param> public override void Entry(IModHelper helper) { // Initialize Logger Logger.Init(Monitor); // Initialize InstanceHolder. InstanceHolder.Init(this); // Register events. EventHolder.RegisterEvents(Helper.Events); // Registration commands. Helper.ConsoleCommands.Add("joedebug", "Debug command for JoE", OnDebugCommand); Helper.ConsoleCommands.Add("joerelcon", "Reloading config command for JoE", OnReloadConfigCommand); // Limit config values. ConfigLimitation.LimitConfigValues(); // Check mod compatibilities. if (ModChecker.IsCoGLoaded(helper)) { Logger.Log("CasksOnGround detected."); IsCoGOn = true; } if (ModChecker.IsCaLoaded(helper)) { Logger.Log("CasksAnywhere detected."); IsCaOn = true; } // Do patching stuff if (!Conf.SafeMode) { HarmonyPatcher.DoPatching(); } else { Logger.Log("Bypassing patching..."); } helper.WriteConfig(Conf); MineIcons.Init(helper); }
public ActionResult EditEventHolder(int id, EventHolder eventHolder) { try { // TODO: Add update logic here var editedEventHolder = db.eventHolders.Where(c => c.HolderId == id).SingleOrDefault(); editedEventHolder.FirstName = eventHolder.FirstName; editedEventHolder.LastName = eventHolder.LastName; editedEventHolder.CompanyName = eventHolder.CompanyName; db.SaveChanges(); return(RedirectToAction("MyEvents")); } catch { return(View("MyEvents")); } }
public void ToEventHolder(EventHolder eventHolder, IEvent @event) { var eventType = @event.GetType(); var logicalEventType = _eventMigrationHierarchyManager.GetLogicalTypeForEvent(eventType); var generation = _eventMigrationHierarchyManager.GetCurrentMigrationLevelForLogicalEvent(logicalEventType); var eventSourceName = GetEventSourceFromEvent(@event); eventHolder.Id = @event.Id; eventHolder.CommandName = @event.CommandName; eventHolder.Name = @event.Name; eventHolder.AggregateId = @event.EventSourceId; eventHolder.EventSource = eventSourceName; eventHolder.SerializedEvent = _serializer.ToJson(@event); eventHolder.LogicalEventName = logicalEventType.Name; eventHolder.Generation = generation; eventHolder.CausedBy = @event.CausedBy; eventHolder.Origin = @event.Origin; eventHolder.Occured = @event.Occured; eventHolder.Version = @event.Version.Combine(); }
private void setupEvents(MapModel mm) { //Add objectives mm.eventCollection.addEvent(new MapEventModel() { x = 26, y = 27, rewardType = ClientEvent.RewardType.Objective, eventData = EventHolder.getMapEvent(1), rewardValue = 0 }); mm.eventCollection.addEvent(new MapEventModel() { x = 3, y = 37, rewardType = ClientEvent.RewardType.Objective, eventData = EventHolder.getMapEvent(2), rewardValue = 0 }); mm.eventCollection.addEvent(new MapEventModel() { x = 45, y = 12, rewardType = ClientEvent.RewardType.Objective, eventData = EventHolder.getMapEvent(3), rewardValue = 0 }); //Add an "event wall" on the left and two on the right for (int y = 38; y >= 35; y--) { mm.eventCollection.addEvent(getRandomEvent(16, y)); } for (int x = 43; x <= 46; x++) { mm.eventCollection.addEvent(getRandomEvent(x, 31)); } for (int x = 43; x <= 46; x++) { mm.eventCollection.addEvent(getRandomEvent(x, 24)); } }
public void UnRegisterListener <T>(String propertyName, EventHandler <PropertyChangeRequestEventArgs <T> > handler) { Type t = typeof(T); if (!m_pool.ContainsKey(t)) { return; } Dictionary <String, Object> events = m_pool[t]; if (!events.ContainsKey(propertyName)) { return; } EventHolder <T> holder = events[propertyName] as EventHolder <T>; holder.OnEvent -= handler; }
public void Fire <T>(String propertyName, T requestedValue) { Type t = typeof(T); if (!m_pool.ContainsKey(t)) { return; } Dictionary <String, Object> events = m_pool[t]; if (!events.ContainsKey(propertyName)) { return; } EventHolder <T> holder = events[propertyName] as EventHolder <T>; holder.Fire(m_sender, requestedValue); }
public void RegisterListener <T>(String propertyName, EventHandler <PropertyChangeRequestEventArgs <T> > handler) { Type t = typeof(T); if (!_pool.ContainsKey(t)) { _pool.Add(t, new Dictionary <String, Object>()); } Dictionary <String, Object> events = _pool[t]; if (!events.ContainsKey(propertyName)) { events.Add(propertyName, new EventHolder <T>()); } EventHolder <T> holder = events[propertyName] as EventHolder <T>; holder.OnEvent += handler; }
public EventSourceVersion GetLastCommittedVersion(EventSource eventSource, Guid eventSourceId) { var eventPath = GetPathFor(eventSource.GetType().Name, eventSourceId); var first = Directory.GetFiles(eventPath).OrderByDescending(f => f).FirstOrDefault(); if (first == null) { return(EventSourceVersion.Zero); } var json = File.ReadAllText(first); var target = new EventHolder { Type = typeof(string), Version = EventSourceVersion.Zero, Event = string.Empty }; _serializer.FromJson(target, json); return(target.Version); }
// </GetEventsSnippet> public List <EventHolder> ListCalendarEvents() { var events = GetEventsAsync().Result; List <EventHolder> eventsList = new List <EventHolder>(); foreach (var calendarEvent in events) { //Console.WriteLine(calendarEvent.Subject); DateTimeTimeZone start = calendarEvent.Start; DateTimeOffset startOffset = OffsetOfDateTimeTimeZone(start); //Console.WriteLine(startOffset.ToString("g")); DateTimeOffset current = new DateTimeOffset(DateTime.Now); DateTimeOffset plus10 = new DateTimeOffset(DateTime.Now).AddMinutes(10); if (startOffset.CompareTo(current) < 0) { //Console.WriteLine("The date is in the past."); continue; } if (startOffset.CompareTo(plus10) > 0) { //Console.WriteLine("The date is in the future."); continue; } var catEnum = calendarEvent.Categories.GetEnumerator(); if (!catEnum.MoveNext()) { //Console.WriteLine("No category."); continue; } var eventHolder = new EventHolder(); eventHolder.Subject = calendarEvent.Subject; eventHolder.Category = catEnum.Current; eventHolder.Date = startOffset; eventsList.Add(eventHolder); } return(eventsList); }
/// <summary> /// Called firstly when SMAPI finished loading of the mod. /// </summary> /// <param name="helper"></param> public override void Entry(IModHelper helper) { // Loads configuration from file. Config conf = Helper.ReadConfig <Config>(); // Initialize InstanceHolder. InstanceHolder.Init(this, conf); // Initialize Logger Logger.Init(Monitor); // Register events. EventHolder.RegisterEvents(Helper.Events); // Registration commands. Helper.ConsoleCommands.Add("joedebug", "Debug command for JoE", OnDebugCommand); // Limit config values. ConfigLimitation.LimitConfigValues(); // Check mod compatibilities. if (ModChecker.IsCoGLoaded(helper)) { Logger.Log("CasksOnGround detected."); IsCoGOn = true; } if (ModChecker.IsCaLoaded(helper)) { Logger.Log("CasksAnywhere detected."); IsCaOn = true; } helper.WriteConfig(Conf); MineIcons.Init(helper); }
#pragma warning disable 1591 // Xml Comments public CommittedEventStream GetForEventSource(EventSource eventSource, Guid eventSourceId) { var eventPath = GetPathFor(eventSource.GetType().Name, eventSourceId); var files = Directory.GetFiles(eventPath).OrderBy(f => f); var stream = new CommittedEventStream(eventSourceId); var target = new EventHolder { Type = typeof(string), Version = EventSourceVersion.Zero, Event = string.Empty }; foreach (var file in files) { var json = File.ReadAllText(file); _serializer.FromJson(target, json); var @event = _serializer.FromJson(target.Type, json) as IEvent; stream.Append(new[] { @event }); } return(stream); }
#pragma warning disable 1591 // Xml Comments public CommittedEventStream GetForEventSource(EventSource eventSource, Guid eventSourceId) { var eventPath = GetPathFor(eventSource.GetType().Name, eventSourceId); var files = Directory.GetFiles(eventPath).OrderBy(f => f); var stream = new CommittedEventStream(eventSourceId); var target = new EventHolder { Type = typeof(string), Version = EventSourceVersion.Zero, Event = string.Empty }; foreach (var file in files) { var json = File.ReadAllText(file); _serializer.FromJson(target, json); var @event = _serializer.FromJson(target.Type, json) as IEvent; stream.Append(new[] { @event }); } return stream; }
public EventSystem() { m_EventHolder = new EventHolder <T, EventArgs <T> >(); }
public EventSourceVersion GetLastCommittedVersion(EventSource eventSource, Guid eventSourceId) { var eventPath = GetPathFor(eventSource.GetType().Name, eventSourceId); var first = Directory.GetFiles(eventPath).OrderByDescending(f => f).FirstOrDefault(); if (first == null) return EventSourceVersion.Zero; var json = File.ReadAllText(first); var target = new EventHolder { Type = typeof(string), Version = EventSourceVersion.Zero, Event = string.Empty }; _serializer.FromJson(target, json); return target.Version; }
public void ModifyEvent(EventHolder eventToModify) { executeQuery("UPDATE Events SET eventname = " + eventToModify.name + ", levelId = " + eventToModify.levelId + ", Beschrijving = '" + eventToModify.description + "' WHERE eventId = " + eventToModify.eventId + ";"); }
public List<EventHolder> GetAllEvents(int level) { String sql = "SELECT * FROM Events WHERE levelId = "+level+" OR levelId > 99 ORDER BY eventId, levelId"; List<List<String>> result = GetAllData(new String[] { "eventId", "levelId", "eventname", "Beschrijving" }, sql); List<EventHolder> events = new List<EventHolder>(); EventHolder physicsEvent; foreach (List<String> row in result) { Console.WriteLine(row[0] + row[1] + row[2] + "ROW"); physicsEvent = new EventHolder( Convert.ToInt32(row[0]), Convert.ToInt32(row[1]), row[2], row[3]); events.Add(physicsEvent); } Console.WriteLine("Events:"+events.Count); return events; }
public IEnumerable<IEvent> GetAll() { var events = new List<IEvent>(); var path = Path.Combine(_configuration.Path, "EventStore"); var eventFiles = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories); foreach (var eventFile in eventFiles) { var json = File.ReadAllText(eventFile); var target = new EventHolder { Type = typeof(string), Version = EventSourceVersion.Zero, Event = string.Empty }; _serializer.FromJson(target, json); var @event = _serializer.FromJson(target.Type, target.Event) as IEvent; events.Add(@event); } return events; }
public EventHolder ToEventHolder(IEvent @event) { var eventHolder = new EventHolder(); ToEventHolder(eventHolder, @event); return eventHolder; }
public void SubscribeToEvent(string name, EventHandler<SandboxEventArguments> eventHandler) { if (eventHandler != null) { lock (((ICollection)_eventObserver).SyncRoot) { EventHolder holder; _eventObserver.TryGetValue(name, out holder); if (holder != null) { holder.EventDelegates += eventHandler; } else { holder = new EventHolder(eventHandler); _eventObserver.Add(name, holder); } } Console.WriteLine("Event named {0} had a new subscriber {1}", name, eventHandler); } }
// GET: EventHolder/Create public ActionResult CreateEventHolder() { EventHolder eventHolder = new EventHolder(); return(View("CreateEventHolder", eventHolder)); }
private void TriggerNextQueuedEvent() { LogProfileEventDispatch("Start TriggerNextQueuedEvent"); bool canTriggerNextEvent = true; while (canTriggerNextEvent) { LogProfileEventDispatch("Start TriggerNextQueuedEvent, Starting Loop"); canTriggerNextEvent = false; lock (mQueuedEventTriggerMutex) { if (!mIsTriggeringQueuedEvent) { Debug.Assert(mNumQueuedEventHandlersInProgress >= 0, "Negative number of event handlers"); canTriggerNextEvent = (mNumQueuedEventHandlersInProgress == 0); mIsTriggeringQueuedEvent = canTriggerNextEvent; } } if (canTriggerNextEvent) { EventHolder eventHolder = null; lock (mQueuedEvents) { canTriggerNextEvent = (mQueuedEvents.Count > 0); if (canTriggerNextEvent) { eventHolder = mQueuedEvents.Dequeue(); } } Debug.Assert((eventHolder != null) || !canTriggerNextEvent); if ((eventHolder != null) && canTriggerNextEvent) { Delegate[] invocationList = null; lock (mQueuedEventTriggerMutex) { Debug.Assert(mNumQueuedEventHandlersInProgress == 0); invocationList = eventHolder.GetInvocationList(); Debug.Assert(invocationList != null); if (invocationList != null) { //it is OK to have more than one delegate in the invocation list, specifically for the connection changed events there may be multiple disconnection event listeners Debug.Assert(invocationList.Length > 0);//debug test to make sure nothing weird is happening for (int x = 0; x < invocationList.Length; x++) { Interlocked.Increment(ref mNumQueuedEventHandlersInProgress); } } } Debug.Assert(invocationList != null); //delegates are invoked here so we don't have to invoke them inside a lock statement if (invocationList != null) { LogProfileEventDispatch("Start TriggerNextQueuedEvent, BeginInvoke"); eventHolder.BeginInvoke(this, invocationList, this.QueuedEventHandlerComplete, null); LogProfileEventDispatch("Start TriggerNextQueuedEvent, BeginInvoke Finished"); } } lock (mQueuedEventTriggerMutex) { mIsTriggeringQueuedEvent = false; } } } LogProfileEventDispatch("End TriggerNextQueuedEvent"); }
public DataReceiver() { eholder = new Interal.EventHolder(); }