J'ai une fonction getpivoteddatatable (données, "date", "id", "drapeau") renvoie des données en format pivotant. Je veux appeler cette méthode à l'aide de la tâche, mais comment passer plusieurs paramètres dans la tâche. P>
5 Réponses :
Vous pouvez créer une classe Helper em> qui conserve tous les paramètres dont vous avez besoin dans votre tâche. p>
Vous pouvez utiliser l'expression de Lambda, ou une fonction 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 }
Bien que surveillez les variables changeantes (telles que commencer plusieurs tâches avec IDS séparées) - vous devez ensuite créer une copie locale de la variable: Stackoverflow.com/questions/10179691/... .
Si vos paramètres sont de types différents, vous pouvez utiliser un tableau d'objet, puis en arrière sur les types d'origine.
Consultez cet exemple d'application de la console: P>
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 également utiliser des "paramètres". Vérifiez C # Params info
Vous pouvez utiliser TUPLE
Task<Tuple<Tuple<Parame1,Parame2,Parame....>> Func() { } var r = await Func(); r.Item1; r.Item2; r.Item.....
Pendant que vous répondez à une question .. Veuillez donner une explication comment votre solution résolvait le problème.
Ceci est une réponse valide