我已經把一個簡單的演示類,看起來像這樣:在任務中維護引用?
public class HelloWorld
{
public string Name { get; set; }
}
public Main()
{
var h = new HelloWorld() { Name = "A" };
Task.Factory.StartNew(() => { Console.WriteLine(h.Name); });
h = new HelloWorld() { Name = "B" };
}
下面的代碼打印:
乙
這是完全合乎邏輯的,但不是我想要(我想打印A
)。 我期望能夠用參數調用StartNew()
,該參數將保留代表內的第一個參考h
,但我看不到此選項。
我錯過了什麼嗎?
編輯:我可以看到,我可以使用
Task.Factory.StartNew(new Action<object>((obj) => { Console.WriteLine((obj as Hello).Name); }),h);
被迫在一個類型的object
傳遞似乎有點.NET 1.1 /預仿製藥給我的,所以希望有一個更好的選擇。
在附註中,您不應該使用'StartNew'。改爲使用'Task.Run'。 –