我正在尝试构建一些调试功能来帮助跟踪一些代码。我想要做的是根据它们是否可以追溯到事件的相同调用来分组跟踪。
说我有这个:
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。
我可以修改事件处理程序,添加一个递增的静态变量或者其他东西,但是我的项目有数百个处理程序,改变那么多代码是不切实际的。这也不是线程安全的。
有没有办法做到这一点?