我有一个从旧格式迁移到新格式的功能。我需要这发生在我的对象的构造函数中,但不是静态构造函数,因为需要一个参数。我怎样才能让一段代码只执行一次?如何使用多线程精确执行一段代码?
对于一些背景:
class Foo
{
public Foo(string bar)
{
ShouldOnlyExecuteOnce(bar);
}
}
,然后使用可能是(每行不同的线程)
var f = new Foo("bar");
var fb = new Foo("meh");
etc
我怎样才能正确地守护 “ShouldOnlyExecuteOnce
” 的方法?
因为这是一种“迁移”类型的函数,所以我希望创建的第一个对象“获胜”并将旧数据迁移到这个新对象中。后来构建的对象不应该试图执行此函数,即使它们的参数不同也可以。
那么你有什么要发生的第二次调用构造函数,有可能引起不同的观点?摘要很难回答这个问题。 – 2013-02-21 17:15:17
@JonSkeet编辑得更清晰 – Earlz 2013-02-21 17:16:59