如下面的代碼所示,我在foreach循環中創建一個線程並在稍後運行它們,但是當我運行線程時「對象引用未設置爲對象的實例」錯誤。我懷疑這是一個關閉問題,但似乎我正在盡我所能通過創建值的本地副本來避免這種情況。如何糾正這些代碼以完成線程的創建,然後在稍後允許調用方法(線程啓動)?爲什麼捕獲的變量沒有持有對象實例的引用
foreach (ObjWithDelegateToCreateTrdFrom item in queryResult)
{
// Capture object state
ObjWithDelegateToCreateTrdFrom capturedValue = item;
// Create thread from object
Thread thread = new Thread(() =>
{
capturedValue.Method.Invoke(capturedValue.paramsArray)
});
// Add thread to temp thread list
trdList.Add(thread);
}
什麼是異常的堆棧跟蹤?你確定它是''capturedValue'引用是null嗎? – thecoop 2010-08-31 13:11:13
你的代碼對我來說看起來很好。無論出於何種原因,「capturedValue.Method」可能爲空嗎? (或後來被設置爲空?) – Heinzi 2010-08-31 13:12:11