C# 2008 SP1C operaio # Impostazioni sfondo e.Result in DoWork e ottenere il valore indietro nel WorkCompleted
Sto usando il lavoratore sfondo
Se una delle condizioni fallisce io metterò e.Cancel true, e assegnare la stringa a e.result. Tutto funziona lì.
Tuttavia, quando il workCompleted si attiva, eseguo il test per e.Result e ottengo un'eccezione "e.result genera un'eccezione di tipo systeminvalidoperation".
Suppongo di poter utilizzare una variabile globale da impostare nel DoWork e confrontare nel lavoro completato. Ma questo potrebbe non essere infallibile.
Qualcuno può dirmi perché sto ottenendo questo con e.Result, e come posso risolvere questo?
Molte grazie,
private void bgwPrepareCall_DoWork(object sender, DoWorkEventArgs e)
{
// Check to see if the called number is blocked.
// If the nubmer is blocked display error message.
if (this.IsNoGateway(sipUsername, statusDisplay1.PhoneNumber))
{
// this.SetIdleState(DialerErrorMessage.GetErrorDescription(12));
e.Cancel = true;
e.Result = "NoGateway";
return;
}
if (!this.IsInvalidTelephoneNumber(sipUsername, statusDisplay1.PhoneNumber))
{
// this.SetIdleState(DialerErrorMessage.GetErrorDescription(13));
e.Cancel = true;
e.Result = "InvalidNumber";
return;
}
}
private void bgwPrepareCall_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error == null)
{
if (e.Cancelled)
{
// Failed
switch (e.Result.ToString())
{
case "NoGateway":
Console.WriteLine("NoGateway: [ Failed ]");
break;
case "InvalidNumber":
Console.WriteLine("InvalidNumber: [ Failed ]");
break;
default:
Console.WriteLine("Unknown");
break;
}
}
if (!e.Cancelled)
{
// Successfull
Console.WriteLine("NoGateway: [ ok ]");
Console.WriteLine("InvalidNumber: [ ok ]");
}
}
else
{
Console.WriteLine("PrepareCall Failed: [ " + e.Error.Message + " ]");
}
}