Jak usunąć obiekt?

0

Tworzymy dynamicznie przycisk, nadajemy mu parametry i umieszczamy na oknie.

            Button btn1 = new Button();
            btn1.Width = 60;
            btn1.Height = 20;
            btn1.Content = "przycisk1";
            grid1.Children.Add(btn1);

Jak teraz możemy usunąć w ten sposób utworzony przycisk?

0

Nie wiem, czy dobrze zrozumiałem ale, żeby usunąć z formatki przycisk spróbuj mniej więcej czegoś takiego:

this.Controls.Remove(this.btn1)
0

W wpf kontrolki nie mają takiej metody.

1

grid1.Children.Remove(sender as Button);

0

A czy jest możliwość usunięcia obiektu który nie jest kontrolką tylko instancją własnej klasy?

0

Co próbujesz zrobić?

0

@Patryk27: W uproszczeniu robię małą gre w której mamy czołgi, będącą instancjami klasy Tank. Klasa ta m.in dynamicznie tworzy obraz czołgu oraz wątek odpowiadający za jego ruch. Jeżeli dany czołg zostanie zniszczony to chciałbym żeby był usuwany cały obiekt. Obecnie jest usuwany tylko Image czołgu sposobem Andrzeja Guźca napisanym 3 posty wcześniej oraz Abort()uje wcześniej wspomniany wątek.
Chodzi o te że działa strzelające w czołgi działają na zasadzie że wykrywają najbliższy czołg i w niego strzelają. Teraz jak czołg zostanie zniszczony i nawet jego obraz został usunięty to i tak jako obiekt istnieje i działa wciąż w niego strzelają.

EDIT: Udało mi się przestawić wskaźnik na dany czołg na null w momencie zniszczenia więc problem jest rozwiązany. Niemniej jeśli istnieje sposób na wymuszenie usunięcia obiektu to chętnie go poznam.

0

zawsze dodatkowo możesz ręcznie wywołać GC, bo referencje usunąłeś ale czy on od razu zostanie usunięty z pamięci to raczej nie.

1

Nie powinieneś bawić się w ręczne zarządzanie pamięcią - jeśli tak musisz robić, masz błąd projektowy.

W Twoim przypadku wydaje mi się, że masz niewłaściwie przemyślany sam mechanizm działania czołgów - dlaczego bawisz się w wielowątkowość, zamiast napisać zwyczajny game loop?

0
Patryk27 napisał(a):

Nie powinieneś bawić się w ręczne zarządzanie pamięcią - jeśli tak musisz robić, masz błąd projektowy.

Dlaczego jest to błąd projektowy?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0