GC nic nie wie o zasobach niezarządzanych. Nie wie ile pamięci one zajmują oraz oczywiście nie jest w stanie zwolnić takich zasobów. O zarządzaniu taką pamięcią pisałem już wiele razy. Opisywałem również zasadę działania GC. Zwykle jest on odpalany po przekroczeniu pewnego progu zużycia pamięci. Niestety, jak wspomniałem, GC nie wie nic o niezarządzanych zasobach. Co w przypadku gdy wrapper zużywa bardzo mało pamięci a zasoby niezarządzane w nim konsumują bardzo wiele pamięci? Dzięki metodom AddMemoryPre...
Sztuka programowania 4280 dni, 22 godziny, 45 minut temu 139 źrodło rozwiń
autor: W poprzednim wpisie pisałem o tym, że zamiast wyznaczać ścieżki do obrazków, lepiej umieścić je w zasobach. Temat wydawał mi się prosty, ale w komentarzach pojawiła się odrobinę odmienna opinia: "Nie, obrazków nie trzyma się w zasobach. Ikony, czasem, jak potrzeba, jeden, dwa obrazki, ale nie więcej. One są za duże - EXE-k puchnie, robi się bałagan, trzeba rekompilować, by zmienić obrazek, a i krótsze nie jest. Tą linijkę równie dobrze można zapisać jako: ImageBrush brush = new ImageBrush(...
Ostatnio pod wpisem: "[WPF 3D] Malujemy scenę 3D pędzlem" dostałem w ramach komentarza pytanie związane z obrazkami w WPF i ścieżkami w nich. Nie jest to wielki problem, ale postaram się odpowiedzieć. Otóż problem wyglądał następująco: czytelnik tworzył pędzel przy pomocy kodu: ImageBrush brush = new ImageBrush(new BitmapImage(new Uri(BaseUriHelper.GetBaseUri(this), "Images/test.png"))); Niestety tak utworzony pędzel nie zawsze generował obraz, taki jak to było oczekiwane. Jak temu zaradzić. Otó...
W języku c# obiekt, którego zasobami chcemy sami zarządzać, powinien implementować interfejs IDisposable. Sporo osób aby zwolnić zasoby pisze następujący kod:publicclass MyClass : IDisposable { #region IDisposable Memberspublicvoid Dispose() { // zwalnianie zasobow } #endregion } Interfejs niestety wymusza nam tylko implementację metody Dispose. Powyższe rozwiązanie jest zdecydowanie nieprawidłowe. Zanim jednak przejdę do omawia co w kodzie jest niepoprawnego, podam prawidłową ...
Zbyt długie ładowanie aplikacji internetowej potrafi odstraszyć nawet najbardziej zainteresowanych użytkowników, a już z pewnością nie wpływa pozytywnie na jej odbiór. Przyjemny splash screen to za mało. Aby uruchomić program w Silverlight, strona kliencka musi wcześniej pobrać w całości paczkę xap. Powinniśmy tak zarządzać projektem, aby rozmiar xap był jak ...
Silverlight 4794 dni, 10 godzin, 42 minuty temu 103 źrodło rozwiń
Jak wiemy, aplikacje Silverlight działają po stronie klienta tak więc całość ściągana jest na komputer użytkownika. Z tego powodu głównym celem jaki nam przyświeca jest stworzenie w taki sposób aplikacji by plik wynikowy XAP był jak najmniejszy w celu wydajnego załadowania programu. Dziś chciałbym przedstawić sposób dostępu aplikacji Silverlight (klient) do zasobów umieszczonych na serwerze. Za to zadanie odpowiada klasa WebClient znajdująca się w przestrzeni nazw System.Net Oto przykład: priva...
Silverlight 5158 dni, 4 godziny, 51 minut temu 42 źrodło rozwiń
TestForm form = new TestForm(); if (form.ShowDialog() == DialogResult.OK) { ... } Czy powyższy króciutki fragment kodu powodujący wyświetlenie okna dialogowego jest poprawny? Niestety, jeszcze do niedawna powiedziałbym bez mrugnięcia oka, że oczywiście tak. Niestety ponieważ ta odpowiedź jest niepoprawna...
Dołączanie zewnętrznych plików do stron ASP.NET jest czynnością niezwyke częstą. Szczególnie gdy korzystamy z zewnętrznych bibliotek zachodzi potrzeba dołączenia skryptów JavaScript, czy arkuszy stylów CSS. Pozornie sprawa jest prosta, jednak komplikuje się, gdy na przykłąd tworzymy zestaw kontrolek, które korzystają z jakiejś biblioteki (np. jQuery). Istnieje wtedy prawdopodobieństwo wielokrotnego włączenia tej samej biblioteki do kodu.Sytuacji można oczywiście uniknąć, sprawdzajac czy dany plik został ...
Microsoft Expression Blend nie tylko umożliwia projektantom tworzenie atrakcyjnych wizualnie interfejsów aplikacji sieciowych i desktopowych, ale także czyni ich pracę znacznie łatwiejszą i bardziej wydajną. Jednym z najlepszych, praktycznych przykładów realizacji tej idei są zasoby – doskonały sposób na ponowne zastosowanie w projekcie wygenerowanych wcześniej obiektów i wartości. Zobaczmy więc, jak tworzyć i stosować zasoby z poziomu środowiska graficznego oraz kodu XAML.