Concurrency c#并发、重叠回调
一个简短的纯技术性问题: 如果我有一个不确定数量的重叠(时间方面的)下面的类实例。“完成时回拨”中的“this”与“Start”中的“this”是否属于同一个“this”以及如何确保 e、 g:Concurrency c#并发、重叠回调,concurrency,callback,Concurrency,Callback,一个简短的纯技术性问题: 如果我有一个不确定数量的重叠(时间方面的)下面的类实例。“完成时回拨”中的“this”与“Start”中的“this”是否属于同一个“this”以及如何确保 e、 g: for(int i=0;i > 开始/代码>时,您不仅传递了原始函数指针(就像C++中的和MyCase::CalBuffiHydo-Endo/Cuth>),而是由调用方法和方法调用的对象组成的元组。(此) 如果您喜欢更明确,也可以手动编写闭包: void Start(string url) { va
for(int i=0;i<3;i++)
新建MyClass().Start();
谢谢首先,您可以使用currying将函数绑定到“this”,如下所述: 对于您的示例案例,我更喜欢lambda函数,如下所述: Lambda函数绑定到创建它们的“this”上下文的范围。周围类的成员对Lambda函数自动可见。使用Lambda函数可以得到更短的代码,编译器也可以更好地优化代码。这是有保证的。 当您通过<代码> CalbBuff.In Soad 到
此
)
如果您喜欢更明确,也可以手动编写闭包:
void Start(string url) {
var that = this; // that get's captured by the closure
ident = aStaticClass.DoSomethingAndForkThread(url, () => that.callback_when_done());
}
for (int i=0; i < 3; i++)
new MyClass().Start(<aURL>);
void Start(string url) {
var that = this; // that get's captured by the closure
ident = aStaticClass.DoSomethingAndForkThread(url, () => that.callback_when_done());
}