Помощь относительно пула потоков C # - PullRequest
1 голос
/ 18 апреля 2010

У меня есть метод, который вызывается довольно часто, с текстом, входящим в качестве параметра ..

Я смотрю на создание пула потоков, который проверяет строку текста и выполняет действия, основанные на этом ..

Может кто-нибудь помочь мне с основами создания пула потоков и запуска новых потоков, пожалуйста? Это чертовски запутанно ..

Ответы [ 3 ]

3 голосов
/ 18 апреля 2010

Я бы предложил вам прочитать Threading в C # - Бесплатная электронная книга , в частности Пул потоков раздел

1 голос
/ 18 апреля 2010

Вот простой пример, с которого стоит начать.

public void DoSomethingWithText(string text)
{
    if (string.IsNullOrEmpty(text))
        throw new ArgumentException("Cannot be null or empty.", "text");

    ThreadPool.QueueUserWorkItem(o => // Lambda
        {
            try
            {
                // text is captured in a closure so you can manipulate it.

                var length = text.Length; 

                // Do something else with text ...
            }
            catch (Exception ex)
            {
                // You probably want to handle this somehow.
            }
        }
    );
}
1 голос
/ 18 апреля 2010

Вам не нужно создавать пул потоков. Просто используйте существующий пул потоков, которым управляет .NET. Чтобы выполнить функцию Foo () в потоке потоков, сделайте следующее:

ThreadPool.QueueUserWorkItem(r => Foo());

Все готово!

Обязательно перехватывайте исключения в вашей функции Foo () - если исключение ускользает от вашей функции Foo, оно завершит процесс.

...