A,B,C等课程很多。
在每一个中,都有一些方法:
class A {
void a1() { ...; }
void a2() { ...; }
}
class B { //dll
void b1() { ...; }
void b2() { ...; }
}
class C { //dll
void c1() { ...; }
void c2() { ...; }
}
A类由我编码,B类和C类是导入的dll。
对于A类,我可以设置断点进行跟踪,但我不能使用B类和C类 我的程序将有数百个类,我想跟踪顺序是什么 调用每个类中的方法 即使有dll中定义的方法,是否可以输出这类信息?
实施例。 a1 - > b2 - > c1 - > a2
添加了:
特别是当dll方法调用另一个dll方法时
在这种情况下,包装器将没有多大帮助
任何人吗?
答案 0 :(得分:2)
如果代码在没有源代码或调试符号的DLL中找到你,那么你的调试选项相当有限:你不能设置没有源的断点,除非你习惯于反汇编。
解决此问题的一种方法是将外部代码包装在您自己的类中,如下所示:
class CWrap {
private readonly C wrapped = new C();
public void c1() {
log.Info("Entering c1");
wrapped.c1();
log.Info("Entering c1");
}
public void c2() {
log.Info("Entering c2");
wrapped.c2();
log.Info("Exiting c2");
}
}
答案 1 :(得分:0)
Mutltithreading应用于方法,而不是类。
一旦启动线程,订单就是不确定的。 Thread order execution
var a = new A();
var b = new B();
var c = new C();
new Thread(a.a1).Start();
new Thread(b.b1).Start();
new Thread(c.c1).Start();
a1,b1,c1没有明确的顺序。
如果您愿意,可以使用任务管理执行。
Tasks.StartNew(()=> a.a1()).ContinueWith(_ => b.b1().ContinueWith(_=>c.c1);
它管道执行a1,b1和c1。
即使有dll中定义的方法,是否可以输出这类信息?
是的,如果您指定debug build