分配事件处理程序时,C#“ System.StackOverflowException:”

时间:2019-03-27 15:42:00

标签: c# event-handling stack-overflow

我有一个从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 *在内存中变得疯狂了。

0 个答案:

没有答案