Это случай, когда это помогает немного посмотреть на документацию. Для метода ThreadPool.QueueUserWorkItem требуется делегат WaitCallback. Вам нужно передать ему метод запуска, который принимает один объект, и объект для использования в качестве параметра для метода.
Ваш метод не имеет такой же подписи, как и обратный вызов. Метод имеет ту же подпись, что и делегат Action<Object>
.
Вам придется написать метод оболочки для метода, который вы хотите запустить, который имеет подпись необходимое:
void WrapperMethod(object state)
{
string a = state.ToString();
string response; // whatever this out parameter is...
Class.Request(out response,a);
}
, а затем настроить тему:
ThreadPool.QueueUserWorkItem(WrapperMethod, "");
компилятор фактически настроил делегата для вас. Если вы работаете в .Net 4.5, вы можете использовать Task.Run
:
Task.Run(()=> Request(out response, a));
Хотя смешивание Task.Run и из параметров не рекомендуется.
Когда вы помещаете это в несколько потоков, что вы собираетесь делать с возвращенным bool из 'Request' и значением' response'? Пожалуйста, добавьте больше кода, чтобы показать, как вы используете код, не являющийся потоком, и мы можем вам помочь. –
Какая версия .NET вы используете? Класс 'Task' и' Task 'класс намного проще в использовании, если вы можете их использовать. –
Каков тип ответа? А также вы должны дать два аргумента. И метод должен возвращать пустоту. – Knerd