Na blogu Nokia Qt pojawiła się informacja o tym, że Nokia sponsoruje 400 Raspberry Pi dla developerów. Szczegóły na: http://blog.qt.nokia.com/2011/11/24/qt-5-with-rasberry-pi-a-delicious-mix-with-home-delivery/
Zgłosiłem już własny pomysł - może się uda. Jak nie to trudno i tak sobie kupię układzik, $25 to w sumie nie wiele jak za takie coś :)
piątek, 25 listopada 2011
Play - promocja świąteczna (dla naiwnych)
Rzecznik Play umieścił na swoim blogu informacje o promocji świątecznej. Po przeczytaniu tej wiadomości nawet się ucieszyłem wysyłam SMSa i dostaję 50zł na rozmowy i SMS/MMSy. Jedynym warunkiem było to aby na koncie znajdowało się 30zł.
Niestety uśmiech z twarzy znikł mi gdy pobrałem regulamin, z którego wynika że nie dostajemy 50zł a kupujemy sobie pakiet 50zł za 30zł :(
Aktywna jest w tej chwili również inna promocja w ramach której za 10zł możemy kupić pakiet 30zł.
Nawet dziecko zauważyłoby, że to jakiś przekręt...
Niestety uśmiech z twarzy znikł mi gdy pobrałem regulamin, z którego wynika że nie dostajemy 50zł a kupujemy sobie pakiet 50zł za 30zł :(
Aktywna jest w tej chwili również inna promocja w ramach której za 10zł możemy kupić pakiet 30zł.
Nawet dziecko zauważyłoby, że to jakiś przekręt...
poniedziałek, 21 listopada 2011
C# - asynchroniczne pobieranie pliku
Aby pobrać plik z internetu nie blokując przy tym głównego wątku można użyć metody DownloadFileAsync z klasy WebClient. Można również dodać obsługę eventów aby wyświetlać postęp i wykryć kiedy plik został pobrany w całości. Przykładowy kod poniżej.
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
if (sfd.ShowDialog() == DialogResult.OK)
{
WebClient wc = new WebClient();
wc.DownloadFileCompleted += new AsyncCompletedEventHandler(wc_DownloadFileCompleted);
wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);
wc.DownloadFileAsync(new Uri(textBox1.Text), sfd.FileName);
}
}
void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
MessageBox.Show("Pobieranie ukończone");
}
Gotowy projekt do pobrania: DownloadAsync.zip
I na koniec jeszcze jedna uwaga. Chociaż metoda jest asynchroniczna to i tak może na chwilę zablokować główny wątek. Dzieje się tak ponieważ przed pobraniem pliku konieczna jest zamiana adresu na IP i dzieje się to wewnątrz funkcji, która niestety jest blokująca. Aby temu zapobiec wystarczy (o ile to możliwe) zamiast nazwy podać IP.
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
if (sfd.ShowDialog() == DialogResult.OK)
{
WebClient wc = new WebClient();
wc.DownloadFileCompleted += new AsyncCompletedEventHandler(wc_DownloadFileCompleted);
wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);
wc.DownloadFileAsync(new Uri(textBox1.Text), sfd.FileName);
}
}
void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
MessageBox.Show("Pobieranie ukończone");
}
Gotowy projekt do pobrania: DownloadAsync.zip
I na koniec jeszcze jedna uwaga. Chociaż metoda jest asynchroniczna to i tak może na chwilę zablokować główny wątek. Dzieje się tak ponieważ przed pobraniem pliku konieczna jest zamiana adresu na IP i dzieje się to wewnątrz funkcji, która niestety jest blokująca. Aby temu zapobiec wystarczy (o ile to możliwe) zamiast nazwy podać IP.
Subskrybuj:
Posty (Atom)