Вызов асинхронного метода с параметрами в 1.1 .Net - PullRequest
0 голосов
/ 17 декабря 2010

У меня есть метод, который занимает много времени, и я хотел бы вызвать метод асинхронно и продолжить, мне не нужен обратный вызов или ошибка.

Я использовал MethodInvoker и BeginInvoke иэто работает нормально, но я не могу понять, как передать параметры?

Это работает без параметров

MethodInvoker me = new MethodInvoker(my method);
me.BeginInvoke(null, null);

Спасибо

Ответы [ 2 ]

2 голосов
/ 17 декабря 2010

Зачем использовать MethodInvoker в этом случае? Создайте свой собственный делегат и используйте его:

public delegate MyMethodDelegate(int param1, string param2);

...

MyMethodDelegate me = new MyMethodDelegate(my method);
me.BeginInvoke(param1, param2, null, null);

Та-да!

2 голосов
/ 17 декабря 2010

Использовать ThreadPool.QueueUserWorkItem. Это идеально подходит для сценариев «выстрели и забудь», когда вам не нужен обратный вызов.

Вы можете передавать параметры следующим образом:

object parameters = new object[] { 3.7, "foo", 1 };
ThreadPool.QueueUserWorkItem(new WaitCallback(Blah), parameters);

...

void Blah(object state)
{
   object[] arguments = (object[])state;
   double first = (double) arguments[0];
   string second = (string) arguments[1];
   int third = (int) arguments[2];
}
...