我将我的任务保存在列表中,现在我想迭代它并找出哪些任务有" IsSpecial = true"组。 但我无法找到任何方法在任务上实际创建属性,该任务也可以通过任务的操作进行修改。
class MyOwnTask: Task
{
public bool IsSpecial= false;
}
new MyOwnTask(() => {
this.IsSpecial = true; // "cannot use 'this' in static member"
});
传递对象状态并不会因为我无法查询它,所以我没有想法......用线程做这件事很容易所以我不知道为什么这对任务来说是不可能的吗?
答案 0 :(得分:2)
用于Task
操作的匿名方法使用声明匿名方法的代码的上下文,而不是MyOwnTask
类的上下文。但这并不能阻止你访问MyOwnTask
的成员;你只需要使用正确的对象引用。
例如,这很好用:
MyOwnTask t = null;
t = new MyOwnTask(() => {
t.IsSpecial = true;
});
这引入了由匿名方法捕获的局部变量t
,可用于访问IsSpecial
字段。