Чтение данных из Excel вызывает утечку памяти

Мой код (успешно) читается на нескольких листах, делает несколько списков и помещает их в словарь для использования других потоков. Функция createLists() каждую минуту проверяет наличие новых данных в createLists() Excel и обновляет списки.

Если я запускаю свой код без этой функции, я не вижу утечки памяти. Но если я включу эту функцию, я могу легко увидеть, как память съедается каждый раз, когда она петляет (каждую минуту).

Вот моя функция:

  public static void createLists() { list_dictionary.Add(1, example_list1); list_dictionary.Add(2, example_list2); list_dictionary.Add(3, example_list3); list_dictionary.Add(4, example_list4); list_dictionary.Add(5, example_list5); list_dictionary.Add(6, example_list6); while (true) { try { Console.WriteLine("In create"); excel = new Excel.Application(); excel_workbook = excel.Workbooks.Open(@"C:\Local Code\Excel\Book1.xlsx"); for (int s = 1; s <= 6; s++) { Excel._Worksheet excel_worksheet = excel_workbook.Sheets[s]; Excel.Range excel_range = excel_worksheet.UsedRange; list_dictionary[s].Clear(); int row_count = excel_range.Rows.Count; int col_count = excel_range.Columns.Count; for (int x = 1; x <= row_count; x++) { for (int y = 1; y <= col_count; y++) { if (excel_range.Cells[x, y] != null && excel_range.Cells[x, y].Value2 != null) { list_dictionary[s].Add(excel_range.Cells[x, y].Value2.ToString()); } } } GC.Collect(); GC.WaitForPendingFinalizers(); Marshal.ReleaseComObject(excel_range); Marshal.ReleaseComObject(excel_worksheet); } } catch (Exception e) { Console.WriteLine("MANTIS"); Console.WriteLine(e); Console.WriteLine(e.StackTrace); } finally { Console.WriteLine("CLEAN UP"); GC.Collect(); GC.WaitForPendingFinalizers(); Marshal.ReleaseComObject(excel_workbook); Marshal.ReleaseComObject(excel); } Console.WriteLine("Out create"); Thread.Sleep(10000); } } } 

В list_dictionary есть 6 «листов», потому что у меня есть цикл for, чтобы перебирать их и обновлять соответствующий список в list_dictionary . I Excel.Range и Excel._Worksheet каждый цикл, затем весь Excel.Application и Excel.Application в конце цикла while.

Любая идея, где я не могу освободить память?

Давайте будем гением компьютера.