Ich habe ein Klasse welche einen Download macht.
Ich kann bei dieser Klasse auch einen Returnwert bekommen, wenn ich join anwende.
Wenn ich join nicht anwende bekomme ich auf dem ProgBar den Status,
aber natürlich läuft der Thread dann für sich und der Returnwert ist nicht verwertbar.
Gibt es eine Möglichkeit das join anders zu verwenden
ohne das es den GUI Prozess einfriert oder muss ich das anders machen um
den Status anzuzeigen.
Status wird ja nur bei großen Dateien gebraucht, ich wollte es halt einfach halten
aber ggf. muss ich dann zwei verschieden Methoden schreiben.
Ich kann bei dieser Klasse auch einen Returnwert bekommen, wenn ich join anwende.
Wenn ich join nicht anwende bekomme ich auf dem ProgBar den Status,
aber natürlich läuft der Thread dann für sich und der Returnwert ist nicht verwertbar.
Gibt es eine Möglichkeit das join anders zu verwenden
ohne das es den GUI Prozess einfriert oder muss ich das anders machen um
den Status anzuzeigen.
Status wird ja nur bei großen Dateien gebraucht, ich wollte es halt einfach halten
aber ggf. muss ich dann zwei verschieden Methoden schreiben.
Java:
public class GetFile
{
String rPaf = "";
String lPaf = "";
ProgressBar pb = null;
ProgressIndicator pi = null;
boolean doneJob = false;
public boolean go(String rPaf, String lPaf, ProgressBar pb, ProgressIndicator pi, boolean headfile)
{
this.rPaf = rPaf;
this.lPaf = lPaf;
this.pb = pb;
this.pi = pi;
Thread gfcs = new Thread(new gfcs());
Thread gfhs = new Thread(new gfhs());
if (headfile) { gfhs.start(); }
else { gfcs.start(); }
// Anzeige nur moeglich wenn join ausgeschaltet ist, also wenn einer nicht null dann kein join
if ( (pb == null) && (pi == null) )
{
try
{
gfcs.join();
gfhs.join();
}
catch (InterruptedException ex)
{
Logger.getLogger(GetFile.class.getName()).log(Level.WARNING, ex.getMessage(), ex);
}
}
return doneJob;
}
private class gfcs implements Runnable
{
@Override
public void run()
{
doneJob = getCFile(rPaf, lPaf, pb, pi);
}
}
private class gfhs implements Runnable
{
@Override
public void run()
{
doneJob = getHFile(rPaf, lPaf, pb, pi);
}
}
}