C# - Download and Saving images to folder -
i'm trying show form displays label "updating, window close once update has finished" download few images files. put on form's shown.
private void frmextraupdater_shown(object sender, eventargs e) { (int = 1; < 8; i++) { string _emoticonurl = string.format("https://dl.dropboxusercontent.com/u/110636189/mapleemoticons/f{0}.bmp", i); webrequest requestpic = webrequest.create(_emoticonurl); webresponse responsepic = requestpic.getresponse(); image webimage = image.fromstream(responsepic.getresponsestream()); // error webimage.save(application.startuppath + @"\images\f" + + ".bmp"); } }
however.. once form shown, label doesn't show because doesn't load (it insantly downloades images. want show label , start download).
the other problem throws "a generic error occurred in gdi+." on webimgae.save part reason.
why's that?
oh and.. if folder "images" not exist, automatically create it?
thanks!
here jon skeet suggestion:
system.net.webclient webclient = new system.net.webclient(); webclient.downloadfile(string.format("https://dl.dropboxusercontent.com/u/110636189/mapleemoticons/f{0}.bmp", i), application.startuppath + @"\images\f" + + ".bmp");
use background worker update ui components
backgroundworker backtask = new backgroundworker(); public frmextraupdater() { backtask.dowork += backtask_dowork; backtask.runworkercompleted += backtask_runworkercompleted; } private void frmextraupdater_shown(object sender, eventargs e) { yourlabel.text = "downloading"; backtask.runworkerasync(); } void backtask_dowork(object sender, doworkeventargs e) { (int = 1; < 8; i++) { system.net.webclient webclient = new system.net.webclient(); webclient.downloadfile(string.format("https://dl.dropboxusercontent.com/u/110636189/mapleemoticons/f{0}.bmp", i), application.startuppath + @"\images\f" + + ".bmp"); backtask.reportprogress(i * (100 / 8), string.format("https://dl.dropboxusercontent.com/u/110636189/mapleemoticons/f{0}.bmp", i)); } } void backtask_progresschanged(object sender, progresschangedeventargs e) { yourlabel.text = "downloading" + e.userstate.tostring(); } void backtask_runworkercompleted(object sender, runworkercompletedeventargs e) { this.close(); }
Comments
Post a Comment