J'ai une fonction GetPivotedDataTable (data, "date", "id", "flag") renvoie des données au format pivoté. Je veux appeler cette méthode à l'aide de la tâche mais comment passer plusieurs paramètres dans la tâche.
Vous pouvez utiliser une expression lambda ou un Func pour passer des paramètres :)
public Form1()
{
InitializeComponent();
Task task = new Task(() => this.GetPivotedDataTable("x",DateTime.UtcNow,1,"test"));
task.Start();
}
public void GetPivotedDataTable(string data, DateTime date, int id, string flag)
{
// Do stuff
}
Dans le cas où vos paramètres sont de types différents, vous pouvez utiliser un tableau d’objets, puis reconfigurer les types d’origine.
Découvrez cet exemple d'application de la console:
static void Main(string[] args)
{
var param1String = "Life universe and everything";
var param2Int = 42;
var task = new Task((stateObj) =>
{
var paramsArr = (object[])stateObj; // typecast back to array of object
var myParam1String = (string)paramsArr[0]; // typecast back to string
var myParam2Int = (int)paramsArr[1]; // typecast back to int
Console.WriteLine("");
Console.WriteLine(string.Format("{0}={1}", myParam1String, myParam2Int));
},
new object[] { param1String, param2Int } // package all params in an array of object
);
Console.WriteLine("Before Starting Task");
task.Start();
Console.WriteLine("After Starting Task");
Console.ReadKey();
}
Vous pouvez créer un helper class qui contiendra tous les paramètres dont vous avez besoin dans votre tâche.