2015-07-10 46 views
0

我將我的任務保存在列表中,現在我想遍歷它並找出哪些任務設置了「IsSpecial = true」。 但我找不到任何方法可以在任務上實際創建屬性,該任務也可以通過任務的動作進行修改。我如何給任務一個屬性?

class MyOwnTask: Task 
{ 
    public bool IsSpecial= false; 
} 
new MyOwnTask(() => { 
    this.IsSpecial = true; // "cannot use 'this' in static member" 
}); 

傳遞對象狀態無法正常工作或因爲我不能爲它進行查詢,所以我的想法......與線程這樣做很容易,所以我不知道爲什麼會在任務中如此不可能?

回答

2

用於Task的動作的匿名方法使用聲明匿名方法的代碼的上下文,而不是類的上下文。但是這並不能阻止你訪問MyOwnTask的成員;你只需要使用正確的對象引用。

例如,該正常工作:

MyOwnTask t = null; 

t = new MyOwnTask(() => { 
    t.IsSpecial = true; 
}); 

這引入局部變量t,這是由匿名方法捕獲,並且可以被用於訪問IsSpecial字段。

+0

謝謝@Peter,我有一個BRAINFREEZE並沒有意識到't'將幾乎保證非空在這裏始終。 – Blub

相關問題