content top

Kurs C# – zapraszamy!

Inicjatywa ta rodziła się już od jakiegoś czasu, ale zawsze coś stawało na przeszkodzie. W końcu jednak udało zebrać się ludzi, czas i tematy :)

Dlatego serdecznie zapraszamy na kurs C# na portalu VirtualStudy! Kurs będzie trwał minimum pół roku. Zaplanowany jest na 6 miesięcy, ale wiadomo, różnie bywa, zawsze może coś wypaść etc.. Na kursie będziemy przedstawiać programowanie w języku C# od podstaw. Dlaczego tak? Ktoś może zapytać, czy nie lepiej byłoby od razu pokazywać budowanie konkretnych aplikacji czy to WinForms, czy to ASP.NET. Uważamy, że aby pisać aplikacje i to aplikacje dobre TRZEBA mieć podstawy i znajomość tematów, które będziemy poruszać. Zawsze prędzej czy później będzie trzeba napisać samemu trochę kodu, nawet korzystając z takiego narzędzia jak Lightstwich.

A po zdobyciu informacji, które zostaną przekazane na kursie, na pewno będzie dużo łatwiej zacząć tworzenie różnego rodzaju aplikacji. Zapraszamy zatem na stronę kursu, rejestracja będzie uruchomiona 14-go listopada, czyli już jutro! :)

Czytaj dalej

Wątki C# i strona Microsoft

Ostatnio kolega zaczął się interesować kwestią wątków w C# i co logiczne znalazł sobie stronkę na microsoftowym suppporcie. Jednak problem polega na tym, że kod w wymaganiach ma podane .NET 1 (kiedy to było ;) ) a po drugie w tej formie jak jest podany po skompilowaniu dostajemy ładną informacje o wyjątku:

Jest to dość oczywisty wyjątek, gdyż aktualizujemy kontrolkę interfejsu z innego wątku niż została ona utworzona. Jak sobie z tym poradzić? Jest wiele sposób, które także zależa od tego jaka to kontrolka, ale w tym przypadku jest to dość proste i schematyczne.

Po pierwsze, należy sobie dodać do Form1 delegatę. Ja pisałem wcześniej, różnie to bywa i czasami musi ona mieć taka samą sygnaturę jak metoda aktualizująca kontrolkę, ale w przypadku tego progressBar-a nie ma takiej potrzeby:

private delegate void Delegacja();

Następnie fragment kodu, który powoduje wyjątek, czyli:

this.progressBar1.Value = newval;

należy zamienić na intrukcję warunkową, która jeśli będzie to wymagane wywoła metodą Invoke dla naszego paska postępu:

if (this.progressBar1.InvokeRequired)
{
progressBar1.Invoke((Delegacja)delegate
{
this.progressBar1.Value = newval;
});
}

Tym oto prostym sposobem poprawiliśmy ten drobny, aczkolwiek znaczący błąd ;)
Oczywiście intrukcję warunkową if można pominąć, ale usztywni to nasz kod i spowoduje, że będzie mniej odporny na  inne sytuacji, a nie o to chodzi w programowaniu.

Przydałoby się też, aby Microsoft zaktualizował swoje strony i aby dane, szczególnie w materiałach wspracia technicznego, były jak najprecyzyjniesze.

Czytaj dalej

Devexpress rozdaje!

Tak jak w temacie. Firma Devexpress udostępniła za darmo część swoich kontrolek. Wystarczy wejśc na stronę, wypełnić formularz i po otrzymaniu maila można pobrać zestaw kontrolek (około 186mb). Aplikacja stworzona przy pomocy tych kontrolek może być rozprowadzana bez pobierania za nią opłat. Firma Devexpress istnieje na rynku od wielu lat, rodukuje solidne, funkcjonalne i gdzie się da, bardzo ładne kontrolki, więc myśle, że warto się zainteresować tą ofertą.

Czytaj dalej
content top