Hallo
Ich habe eine Grundsatzfrage zum Thema Threading.
Ich habe mir eine Klasse (heisst 'FileDownload') erstellt, mit der eine Datei gedownloadet wird, gewisse Events auslöst usw.
Die Klasse, mit zusätzlich andernen Klassen, soll als Klassenbibliothek kompiliert werden, damit ich die resultierende dll-Datei in anderen Projekten benutzen kann.
Nun zu meiner Frage, bei der ich eigentlich 2 Lösungsvarianten sehe:
Variante 1:
Ich erstelle in der Klasse schon den Thread für einen Download, damit ich mich in späteren Projekten, wo diese Bibliothek verwendet wird, nicht mehr um das Threading (in Bezug auf das Downloaden) kümmern muss. Sondern nur noch das/die Objekte instanziere und die 'Start()'-Methode aufrufe.
Aufruf dann wie folgt:
Code:
FileDownload file1 = new FileDownload();
FileDownload file2 = new FileDownload();
file1.start();
file2.start();
Diese 2 Downloads würden dann ja parallel laufen, da in der FileDownload-Klasse ja ein Thread erstellt wird.
Variante 2:
Oder ich in der Klasse keine Threads erstelle, dafür in späteren Projekten wenn ich die Klasse verwende (bei der Instanzierung des, möglicherweise mehrere, 'FileDownload'-Objektes), diese Threads erstelle.
Aufruf dann wie folgt:
Code:
FileDownload file1 = new FileDownload();
Thread thr1 = new Thread(new ParameterizedThreadStart(download));
thr1.start(file1);
FileDownload file2 = new FileDownload();
Thread thr2 = new Thread(new ParameterizedThreadStart(download));
thr1.start(file2);
private void download(object file)
{
(FileDownload)file.start();
}
Der Code ist nur schnell hingeschrieben, er soll auch hier auch nicht korrekt sein, sondern nur zur Veranschaulichung dienen.
Es geht um die Grundsatzfrage, was besser ist, in Klassenbibliotheken selbst schon die Threads zu erstellen, oder die Threads im Programm zu erstellen, bei welchem man diese Klassenbibliothek benutzt.
Was ist 'best practice'?
Danke schonmal im vorraus.