Programm hängt sich auf :(
Verfasst: Dienstag 17. August 2004, 16:22
Hi,
also es wird in einem thread ein download durchgeführt und dann eine funktion gestarten, um zu gucken, ob noch mehr Downloads in der Liste stehen. Aber wenn kein Download mehr drin steht, hängt dich das Programm einfach auf. ich denke, dass es was mit dem thread zu tun hat.
Kann es sein, dass es ein Problem gibt, weil ich die funktion startdownload() aus einem thread heraus aufrufe und wenn ja, was kann ich dagegen tun?
also es wird in einem thread ein download durchgeführt und dann eine funktion gestarten, um zu gucken, ob noch mehr Downloads in der Liste stehen. Aber wenn kein Download mehr drin steht, hängt dich das Programm einfach auf. ich denke, dass es was mit dem thread zu tun hat.
Code: Alles auswählen
def startdownload():
listboxdls = listbox.curselection()
if len(listboxdls) != 0:
downloaddata = files[int(listboxdls[0])]
thread.start_new_thread(downloadfile,(downloaddata,))
else:
root.destroy()
def handleDownload(block):
global file, filesize
file.write(block)
statusanzeige.set(('Status: %s/%s')%(str(file.tell()),str(filesize)))
def downloadfile(downloaddata):
global file, filesize
try:
ftp = FTP()
ftp.connect(host=downloaddata[0], port=int(portdata))
statusanzeige.set('Status: connected')
ftp.login(logindata, pwdata)
statusanzeige.set('Status: logged in')
ftp.cwd(downloaddata[1])
statusanzeige.set('Status: path ok')
filesize = ftp.size(downloaddata[2])
statusanzeige.set('Status: get filesize')
file = open(savepath+downloaddata[2], 'wb')
statusanzeige.set('Status: start download')
ftp.retrbinary('RETR ' + downloaddata[2], handleDownload)
ftp.close()
statusanzeige.set('Status: disconnected')
file.close()
listboxdls = listbox.curselection()
listbox.selection_clear(int(listboxdls[0]))
except:
tkMessageBox.showwarning(title='Error!', message='Server ist down, voll oder die Files wurden deleted.')
listboxdls = listbox.curselection()
listbox.selection_clear(int(listboxdls[0]))
startdownload()