Параметры пула потоков - PullRequest
       1

Параметры пула потоков

0 голосов
/ 29 августа 2011

Я искал везде, и мне нужно решение, которое позволило бы мне добавить 200-300 заданий с определенной функцией, которая принимает параметры.Я знаю о делегате и объекте как единственном параметре, но я надеялся на что-то, что позволило бы ставить в очередь задачи, каждая из которых имеет разные параметры, а не только объектный параметр.

Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

2 голосов
/ 29 августа 2011

Вы можете сделать что-то вроде этого:

void MyMethod(int param)
{
    ....
}

...

ThreadPool.QueueUserWorkItem(_ => MyMethod(1));
ThreadPool.QueueUserWorkItem(_ => MyMethod(2));
ThreadPool.QueueUserWorkItem(_ => MyMethod(3));
...
ThreadPool.QueueUserWorkItem(_ => MyMethod(42));

Другой вариант - заставить MyMethod принять параметр типа Object и использовать вторую перегрузку QueueUserWorkItem:

void MyMethod(object param)
{
    int value = (int)param;
    ....
}

...

ThreadPool.QueueUserWorkItem(MyMethod, 1);
ThreadPool.QueueUserWorkItem(MyMethod, 2);
ThreadPool.QueueUserWorkItem(MyMethod, 3);
...
ThreadPool.QueueUserWorkItem(MyMethod, 42);
1 голос
/ 29 августа 2011

простой образец:

        for (int i = 0; i < 100; i++)
        {
            System.Threading.ThreadPool.QueueUserWorkItem(k =>
            {
                TestMethod(k);
            }, i);
        }
0 голосов
/ 29 августа 2011

вы ищете начало потока с параметризованным потоком (пример ниже)

string myUrl = 'asd'
Thread t = new Thread (new ParameterizedThreadStart(FetchUrl));
t.Start (myUrl);


static void FetchUrl(object url)
{
    // use url here, probably casting it to a known type before use
}

или можете использовать задачи, найденные в System.Threading.Tasks ..

Task.Factory.StartNew(() => {
                    File.WriteAllBytes(path, response);
                });
0 голосов
/ 29 августа 2011

Ничто не мешает вам отправлять список объектов в качестве параметров объекта, поэтому на практике вы можете передать любое количество параметров в функцию потока.

...