Zajmuję się rozwojem ASP.NET w VS i właśnie znalazłem interesującą sugestię małego kodu (myślę, że pochodzą one z coderush, ale mogę się mylić).Dlaczego muszę wywoływać dispose na formantach ASP.NET?
Ilekroć tworzę formanty, mówi mi, że powinienem używać dla nich instrukcji "using". Jestem trochę zdezorientowany co do tego, co tu się dzieje. z użyciem mój kod wygląda mniej więcej tak:
using (HtmlTableRow tableRow = new HtmlTableRow())
{
tableRow.Attributes.Add("class", isOddRow ? "OddRow" : "EvenRow");
listingTable.Rows.Add(tableRow);
addCell(tableRow, row, "issueId");
addCell(tableRow, row, "Title");
addCell(tableRow, row, "Type");
addCell(tableRow, row, "Summary");
}
Więc ja oczekuję, że w końcu z wykorzystaniem rachunku będzie zadzwonić wyrzucać na TableRow. Jednak dokumenty w bibliotece MSDN mówią:
Metoda usuwania pozostawia Kontrolę w stanie niezdatnym do użytku. Po wywołaniu tej metody, musisz zwolnić wszystkie odniesienia do kontrolki, aby pamięć , którą zajmował, mogła zostać odzyskana przez wyrzucanie elementów bezużytecznych.
Spodziewam się, że teraz mam obiekt, który nie może być użyty w mojej strukturze kontrolnej, aby mógł się zepsuć lub nie renderować. Jednak wszystko wydaje się działać dobrze.
Więc zastanawiam się, dlaczego wszystkie elementy sterujące są dostępne do użytku? Czy to dlatego, że niektóre z nich będą dostępne, i czynienie z nich wszystkich jednorazowymi środkami oznacza, że jedno wezwanie do dysponowania na najwyższym poziomie może zostać przekazane rekursywnie do wszystkich kontrolek podrzędnych?
Myślę, że zrozumiałbym, gdyby nie fakt, że doktorzy wyraźnie mówią, że pozbycie się kontroli czyni ją niezdatną do użytku ... Czy doktorzy właśnie mylą się?
W jaki sposób możemy obsłużyć osierocone obiekty (wspomniane przez @Toby), jeśli nie używamy bloku "używając"? – Lijo