是否可以区分同一事件的不同调用?

时间:2016-03-09 03:47:20

标签: c# debugging stack-trace

我正在尝试构建一些调试功能来帮助跟踪一些代码。我想要做的是根据它们是否可以追溯到事件的相同调用来分组跟踪。

说我有这个:

public partial class StackTraceForm : Form
{
    public StackTraceForm()
    {
        InitializeComponent();
        listTraces = new List<StackTrace>();
    }

    List<StackTrace> listTraces;

    private void buttonAddTraces_Click(object sender, EventArgs e)
    {
        listTraces.Add(new StackTrace(true));
        listTraces.Add(new StackTrace(true));
    }
}

如果我单击buttonAddTraces两次,listTraces将包含4条跟踪,其中0和1来自第一次点击,2和3来自第二次。

到目前为止,我所做的是爬下堆栈跟踪以找到来自Windows的第一帧(通过检查源文件名是空白的 - 到目前为止工作),然后返回一个来获取事件处理程序(在这种情况下只是顶部框架,buttonAddTraces)。所以我想要一些方法告诉跟踪0和1来自buttonAddTraces的不同调用,而不是跟踪2和3。

我可以修改事件处理程序,添加一个递增的静态变量或者其他东西,但是我的项目有数百个处理程序,改变那么多代码是不切实际的。这也不是线程安全的。

有没有办法做到这一点?

0 个答案:

没有答案