У меня есть подпрограмма инициализации, вызванная из события Show формы.По завершении инициализации запускается событие Initialized.
В этом случае я назначаю обработчики событий инициализированным объектам.Но как только я пытаюсь назначить это событие, я получаю «System.StackOverflowException:».Я поставил точку останова в событии, чтобы увидеть, вызывается ли оно рекурсивно, но это не так.
SCD.OCV.OnCard += OCV_OnCard;
Обработчик события в SCD.OCV.OnCard
определяется следующим образом в классе TOCV:
public class CardEventArgs : EventArgs
{
public CardEventArgs(TCard card, ECardStatus status)
{
Card = card;
Status = status;
}
public ECardStatus Status { get; }
public TCard Card { get; }
}
public event CardHandler OnCard;
public delegate void CardHandler(object sender, CardEventArgs e);
protected virtual void FireCard(CardEventArgs e)
{
OnCard?.Invoke(this, e);
}
Обработчик события, который я пытаюсь назначить, определяется следующим образом:
private void OCV_OnCard(object sender, TOCV.CardEventArgs e)
{
BeginInvoke((Action)delegate
{
});
}
А теперь для назначения, где все аварии:
SCD.OCV.OnCard += OCV_OnCard; // Here I get the StackOverflowException
C # немой основной язык программирования (я больше знаком с C / C ++), поэтому я не уверен на 100%, все ли сделано правильно.
[EDIT]
Успел отследитьвниз по вопросу.Это была сторонняя DLL C / C ++, неправильно завершающая строку.Следовательно, символ * взбесился в памяти.