передать System.Func в поток - PullRequest
       7

передать System.Func в поток

0 голосов
/ 07 октября 2018

Я хотел бы передать функцию (a) методу (b) в качестве параметра и затем запустить новый поток, который выполняет эту функцию (a).Похоже на:

Thread tr = new Thread(()=>SomeMethodWithParams(params))

Но как:

public void SomeMethod(System.Func<string> SomeMethodWithParams)
{ 
   Thread tr = new Thread(SomeMethodWithParams);//how to do this right??
   tr.Start();
}

Я хотел бы сделать это,

 public void RunThrededJobs(Action[] actions)
{
    for(int i =0; i<actions.Length; i++)
    {
        ThreadStart x = new ThreadStart(actions[i]);
        Thread someThread = new Thread(x);
        someThread.IsBackground = true;
        someThread.Start();
    }
}

, но с параметрами в методе, который выполняется вновая тема.

1 Ответ

0 голосов
/ 07 октября 2018

Есть несколько разных способов справиться с этим, но мне немного неясно, как именно вам нужно это использовать.Но, учитывая ваше определение функции для RunThrededJobs, вы можете выполнить его так:

Action[] actions = {
    () => SomeMethodWithParams("foo"),
    () => SomeMethodWithParams("bar"),
    () => SomeMethodWithParams("baz")
};

RunThrededJobs(actions);
...