我有一个从Form的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]
设法跟踪问题。这是第三方C / C ++ DLL无法正确终止字符串。因此,char *在内存中变得疯狂了。