ftp with download progress bar is not filling c# -
hi people i'm trying put download progress bar ftp download program kinda works progress bar not filling download or after download download completed message code below ;
public void yap(object o) { (o label).text = "downloading"; } private void button1_click(object sender, eventargs e) { checkforillegalcrossthreadcalls = false; parameterizedthreadstart p = new parameterizedthreadstart(yap); thread t = new thread(p); t.start(label2); backgroundworker _backgroundworker = new backgroundworker(); _backgroundworker.dowork += _backgroundworker_dowork; _backgroundworker.workerreportsprogress = true; _backgroundworker.progresschanged += new progresschangedeventhandler(_backgroundworker_progresschanged); _backgroundworker.runworkercompleted += new runworkercompletedeventhandler(_backgroundworker_runworkercompleted); _backgroundworker.runworkerasync(); } void _backgroundworker_runworkercompleted (object sender, runworkercompletedeventargs e) { messagebox.show("download completed"); } void _backgroundworker_progresschanged(object sender, progresschangedeventargs e) { progressbar1.value = e.progresspercentage; } private void form1_load(object sender, eventargs e) { autosizemode = autosizemode.growandshrink; progressbar1.maximum = 100; } void _backgroundworker_dowork(object sender, doworkeventargs e) { dispatcher.currentdispatcher.invoke (system.windows.threading.dispatcherpriority.background,new action(delegate() { string yol = environment.currentdirectory; ftpwebrequest ftp; try { filestream sr = new filestream(yol + "\\list.gz", filemode.create); ftp = (ftpwebrequest)ftpwebrequest.create(new uri ("ftp://" + textbox1.text + "/" + "/usr/valapp/etc/list.gz")); ftp.credentials = new networkcredential("username", "password"); ftp.method = webrequestmethods.ftp.downloadfile; ftp.usebinary = true; ftpwebresponse response = (ftpwebresponse)ftp.getresponse(); stream ftpstream = response.getresponsestream(); long cl = response.contentlength; int buffersize = 2048; int readcount; byte[] buffer = new byte[buffersize]; readcount = ftpstream.read(buffer, 0, buffersize); while (readcount > 0) { sr.write(buffer, 0, readcount); readcount = ftpstream.read(buffer, 0, buffersize); } ftpstream.close(); sr.close(); response.close(); messagebox.show("file downloaded!"); (int = 0; <= 100; i++) { backgroundworker1.reportprogress(i); system.threading.thread.sleep(20); } } catch (exception ex) { messagebox.show(ex.message, "error"); } })); } } } code might complex totally works told progress bar not filling thank you.
int cnt=0; double totalentry=response.contentlength/buffersize; while (readcount > 0) { sr.write(buffer, 0, readcount); readcount = ftpstream.read(buffer, 0, buffersize); if(_backgroundworker.workerreportsprogress) { _backgroundworker.reportprogress(cnt++*100/(int)totalentry); } } you may edit part of code.
Comments
Post a Comment