我不確定我是否能夠解釋這種行為,但我會嘗試。我有一個像儀表板這樣的程式,其中一些圖形模塊在啟動時被初始化,每個模塊都有一個唯一目的是顯示一個圖形有一個傳遞給它的函式來確定顯示的資料。模塊構建(使用相應的函式初始化每個模塊型別)使用 Task 在單獨的執行緒中處理。但是這些函式中的一些隨機停止作業,并且帶有資料的串列停止可用,就好像它從未宣告過一樣。
這是其中一個功能,請記住,哪個會引發此錯誤是隨機的,但其中一個總是會引發例外。我真的無法找到可能導致這種行為的原因,我認為其他執行緒正在洗掉資源,但是這個 List 是在啟動時創建的,只傳遞并用作參考。在程式中,我從來沒有重置過這個串列。相同的代碼在其他專案中作業,并且在逐步除錯的同時......我真的無法遵循
private static IEnumerable<ICompositeValue> GroupEvent(IEnumerable<Event> events, DateTime referenceDate, Month month)
{
List<ICompositeValue> Values= new List<ICompositeValue>();
foreach (Days day in (Giorni[])Enum.GetValues(typeof(Days)))
{
if (day != Giorni.Sunday)
if (events== null) return null; //this was tried to catch the exception
Values.Add(new ICompositeValue()
{
Argument = day.ToString(),
Valore = event.Count(x => (int)x.DDB_APDATA.Value.DayOfWeek == (int)day && (int)x.DDB_APDATA.Value.Month == (int)month && x.DDB_APDATA.Value.Year == referenceDate.Year)
}); ;
}
return valori;
}
如此圖所示, Visual Studio 甚至無法評估 List 值,就好像它從未宣告過一樣
有人可以指出我正確的方向嗎?
謝謝大家!
我只是想感謝那些試圖幫助我的人。
我仍然不明白為什么除錯器會以它的方式運行,因為它顯示“x”是 null 而不是內部屬性,但我設法找到了問題所在。我注意到來自 DataTable 的物件映射對 DateTime 型別變數表現得很奇怪,而且確實有時會回傳 null
uj5u.com熱心網友回復:
正如 Jeroen Mostert 所建議的那樣,您的 lambda 中的某些屬性似乎意外地為空。原因events不可用是因為您的除錯器背景關系位于 lambda 內。
x => (int)x.DDB_APDATA.Value.DayOfWeek == (int)day && (int)x.DDB_APDATA.Value.Month == (int)month && x.DDB_APDATA.Value.Year == referenceDate.Year
因此x,DDB_APDATA、 或中的一個Value可能為空。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/484008.html
