考慮下面的代碼:將Task作爲方法參數傳遞是否安全?
public class Program {
static void Main(string[] args) {
Generate();
}
static void Generate() {
Task t = null;
t = Task.Run(() => {
MyClass myClass = new MyClass();
myClass.ContinueTask(t);
});
Console.ReadLine();
}
}
public class MyClass {
public void ContinueTask(Task t) {
t.ContinueWith(x => {
Console.WriteLine("Continue here...");
});
}
}
它是安全與T傳遞的參數作爲這樣還是更直接啓動內部MyClass的一個新的任務?
這看起來並不安全 - 因爲內部任務已經開始並且已經在't'分配發生之前到達'Read' *調用的可能性很小。 –
@Damien_The_Unbeliever避免這種情況的方法是什麼?我使用的是ContinueWith,這聽起來像你必須讓對象本身繼續對它做某些事情。 – Hristo
這似乎是幾乎遞歸的。除非我錯過了一些東西,這就是說在讀取之後繼續解析,這需要解析作爲讀取的一部分。 – Enigmativity