Ik heb even de dll en video bekeken en heb een paar opmerkingen.
Het eerste wat opvalt is dat de gebruiker heel wat dingen moet aanmaken voor hij kan beginnen. Is het geen optie om alles (zoveel mogelijk) in één class te stoppen?
b.v. een 'UpdateService' class
Je kunt dan in deze class wat references maken naar de status, labels en/of dialogs (wat je ook wilt gebruiken) zodat de gebruiker deze niet hoeft te maken.
Ook zou je de gebruiker niet de status moeten laten wijzigen.
Je zou niet moeten kijken of de status gelijk is aan 'Updating' maar gewoon StartChecking() moeten uitvoeren. De method moet dan kijken wat de status is en als deze dus al updating is moet hij gewoon niets doen of een event aanhalen.
b.v.
Code:
public void StartChecking()
{
if (Status == UpdateStatus.Checking || Status == UpdateStatus.Updating)
{
//raise allready working event maybe?
return;
}
Status = UpdateStatus.Checking;
//do your update checking
//etc
}
Hierbij zou je bv ook een StatusChanged event kunnen toevoegen zodat de gebruiker als hij dat wil altijd kan reageren als de status aangepast wordt.
Ook zou de service klaar voor gebruik moeten zijn zodra hij wordt aangemaakt. Dus ofwel properties die nodig zijn in de constructor vragen of defaults zetten.
b.v.
Code:
UpdateService updateService = new UpdateService(@"\config.xml", @"127.0.0.1");
De gebruiker kan gewoon hierna de properties aanpassen die hij anders wil hebben.
Je moet er van uitgaan dat een gebruiker nooit doet wat je verwacht... ;D
Dit zou de gebruiker niet zo moeten kunnen doen of je moet even een null check ertussen doen.
Code:
UpdateLabel lbl = new UpdateLabel();
lbl.ShowUpdateDialog();
-> null ref exception
Ik hoop dat je hier wat aan hebt, zo ja heb ik nog wel een paar dingen die het voor de gebruiker van de dll een stuk gemakkelijker maakt.