奇怪的问题。 使用这些代码有什么区别?
class TestThread {
public void waitFunction() {
// Some code like this.UpdateProgress()
}
public void start() {
Thread thWaitingScraper = new Thread(waitFunction); // Method 1
Thread thWaitingScraper = new Thread(delegate() { waitFunction(); }); // Method 2
}
谢谢!
答案 0 :(得分:2)
没有功能差异,但在第二种方法中可能会引起类型泄漏。
当编译器需要在场景后面创建隐式类时会导致Typeleak。在这种情况下,因为t waitFunction
是类的非静态成员,所以编译器需要创建一个保存对this
类的引用的类,以便可以使用适当的实例调用该函数。在这个类中,它创建了你在第二个方法中编写的匿名方法,并将其作为Thread
委托参数传递。