我有以下代碼:編譯器是否將處置的對象設置爲null?
public class Program
{
private static Task task;
private static int counter = 0;
private static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
if (task == null)
{
Console.WriteLine(++counter);
}
using (task = new Task(Method))
{
task.Start();
task.Wait();
}
// task = null;
GC.Collect();
GC.WaitForPendingFinalizers();
}
Console.ReadKey();
}
public static void Method() { }
}
我的除外輸出:1 2 3 4 5 6 ...但這種方法的實際輸出爲1!
如果我從代碼行Task = null;
刪除評論,那麼我將成爲預期的結果。
爲什麼處置的任務不是空的!?我想,如果物品被丟棄,那麼它們可以被設置爲GC(我已經強制GC收集),換句話說,GC會收集已處置(孤立)的物體並將它們置於空?!
我發現了一個非常有用的問題鏈接:http://stackoverflow.com/questions/2926869/do-you-need-to-dispose-of-objects-and-set-them-to-null –