Dans l'exemple de code ci-dessous, j'utilise la fonction lambda pour que 3 threads fassent des choses différentes. Mon but est de rendre le nombre de threads configurable, donc je pensais utiliser une boucle pour démarrer les threads. Mais j'ai toujours l'erreur in static function can't call non-static members
. La communauté peut-elle m'aider ou me diriger vers un tutoriel? Merci beaucoup!C# utiliser la boucle pour démarrer les threads et passer les paramètres
Mon code:
internal class FeedClient
{
private static void Main(string[] args)
{
int iteration = 10;
int ranSleepTime = 1000;
var obj = new MyClass();
var threads = new Thread[3];
(threads[0] = new Thread(() =>
{
Random random = new System.Random();
for (int i = 0; i < iteration; i++)
{
obj.MyMethod("my string 1");
Thread.Sleep(random.Next(ranSleepTime));
}
})).Start();
(threads[1] = new Thread(() =>
{
Random random = new System.Random();
for (int i = 0; i < iteration; i++)
{
obj.MyMethod("my string 2");
Thread.Sleep(random.Next(ranSleepTime));
}
})).Start();
(threads[2] = new Thread(() =>
{
Random random = new System.Random();
for (int i = 0; i < iteration; i++)
{
obj.MyMethod("my string 3");
Thread.Sleep(random.Next(ranSleepTime));
}
})).Start();
foreach (Thread thread in threads)
{
thread.Join();
}
obj.Close(false);
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
look désiré:
for(int i=0;i<3;i++){
threads[i] = new Thread(func); // func is the lambda function
threads[i].Start(myData[i]); // myData[] may be a string array
}
Voulez-vous dire que votre «code actuel» fonctionne, mais pas le «code désiré»? –
Mon code actuel fonctionne bien, mais il est moche. Le code désiré est juste un pseudo-code approximatif. J'ai essayé plusieurs façons de le réaliser mais je n'ai pas réussi à le faire fonctionner. – Stan
Avez-vous déclaré "func" et "myData" statiques? – Peter