J'essaie d'utiliser une classe imbriquée pour obtenir deux classes à passer dans un seul argument afin que je puisse l'envoyer à un arrière-plan. Jusqu'à présent, j'ai réussi à passer des arguments simples dans un backgroundworker mais je dois encore le faire avec une classe imbriquée où je finis par passer les deux ou mes classes désirées dans le même argument. Alors, est loin ici une partie du code que je utilise:Utilisation d'une classe imbriquée pour passer plusieurs arguments dans un arrière-plan
Ceci est la classe Nested je tente d'utiliser:
public class MyBackGroundWorkerObject
{
public class TimeZone
{
public string Zone;
public int difference;
public override string ToString()
{
return Zone;
}
}
public class AccountName
{
public string AccountSid;
public string AuthToken;
public string Name;
public override string ToString()
{
return Name;
}
}
}
Voici un exemple de l'une des classes en action:
MyBackGroundWorkerObject.AccountName acct = new MyBackGroundWorkerObject.AccountName();
//AccountName acct = new AccountName();
acct.AccountSid = "abcd";
acct.AuthToken = "xyz";
acct.Name = "Potato";
ddlAccounts.Items.Add(acct);
MyBackGroundWorkerObject.TimeZone region = new MyBackGroundWorkerObject.TimeZone();
//TimeZone region = new TimeZone();
region.Zone = "UTC";
region.difference = 0;
comboBox1.Items.Add(region);
Et voici la partie où je suis complètement confus, j'aimerais pouvoir utiliser ces deux éléments lorsque j'appelle de la fenêtre Formulaire d'où il récupère certaines des données saisies. Je ne sais pas sur la façon d'obtenir ces deux classes pour travailler dans conjuction où je peux les envoyer les deux en même temps à l'BackgroundWorker:
MyBackGroundWorkerObject myBackGroundWorker1 = new MyBackGroundWorkerObject();
object obj = ddlAccounts.SelectedItem;
MyBackGroundWorkerObject.AccountName acct = obj as MyBackGroundWorkerObject.AccountName;
backgroundWorker1.RunWorkerAsync(acct);
Ne pas utiliser 'BackgroundWorker'. Au lieu de cela, utilisez 'await'. – SLaks
Au-delà du point où il est possible de changer ce code. –
Vous avez défini les classes imbriquées dans MyBackGroundWorkerObject mais il n'y a pas de variable de type TimeZone ni de type AccountName déclarée dans la classe MyBackGroundWorkerObject. –