public void SkipCurMessageHandlers(string endMsg, string storyId, string _namespace) { if (!string.IsNullOrEmpty(_namespace)) { storyId = string.Format("{0}:{1}", _namespace, storyId); } int count = m_StoryLogicInfos.Count; for (int index = count - 1; index >= 0; --index) { StoryInstance info = m_StoryLogicInfos[index]; if (IsMatch(info.StoryId, storyId)) { info.ClearMessage(); var enumer = info.GetMessageHandlerEnumerator(); while (enumer.MoveNext()) { var handler = enumer.Current; if (handler.IsTriggered && handler.MessageId != endMsg) { handler.CanSkip = true; } } var cenumer = info.GetConcurrentMessageHandlerEnumerator(); while (cenumer.MoveNext()) { var handler = cenumer.Current; if (handler.IsTriggered && handler.MessageId != endMsg) { handler.CanSkip = true; } } } } }