2011-12-21 2 views
0

Я хочу создать свой собственный поток threadpool. Одна из моих функций имеет параметр WaitCallback delegate в качестве параметра, и я бы хотел использовать его, как в базовом threadpool, чтобы запустить его в свободном потоке из набора.Использование делегата waitcallback в моем собственном threadpool

Моя проблема в том, что я не знаю, как использовать делегат WaitCallback (единственные примеры msdn и других сайтов показывают, как помещать метод в threadpool с делегатом) со стороны threadpool.

Можете ли вы рассказать о том, как получить метод от WaitCallback (так что я могу запустить его в определенном потоке), или если WaitCallback/threadpool работает другим способом, как это работает.

Заранее благодарен!

+0

Я ненавижу появляться груб, но если вы не знаете, как использовать WaitCallback я очень сомневаюсь, что вы будете писать лучше ThreadPool чем MS или HTTP : //smartthreadpool.codeplex.com –

ответ

1

WaitCallback - это не что иное, как пользовательский тип делегата. Если вы видите декларацию, вы найдете это public delegate void WaitCallback(object state);. Значит, вы использовали бы его, чтобы присвоить ему любой метод с входным параметром типа object. Пример public void MyMethod(object parameter) может быть назначен WaitCallback wc = new WaitCallback(MyMethod).

+0

Спасибо за сообщение! Я знаю, как создать делегат WaitCallback, но проблема в том, как использовать этот делегат. например: myfunction (WaitCallback wcd) { // что мне теперь делать с wcd, чтобы иметь возможность использовать метод? } Я хочу начать работу в новом потоке. Можно ли теперь использовать этот метод, как это, или threadpool использует WaitCallback каким-то другим способом. –

0

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

public void ExecuteWork(WaitCallback wcb, Object param) 
{ 
    Thread t = new Thread(
     o => 
     { 
      wcb(o); 
     }); 
    t.Start(param); 
} 
+0

Спасибо за ответ. Да, я хотел запустить новую ветку с помощью WaitCallback. –