Вызовы метода организации очередей - какая-либо идея, как?

Я пишу в большой степени asynchronseous приложение.

Я ищу способ поставить в очередь вызовы метода, подобные тому, что BeginInvoke / EndInvoke делает...., но на моей собственной очереди. reaqson - то, что у меня есть своя собственная оптимизированная система массового обслуживания сообщения с помощью пула потоков, но в то же время удостоверяясь каждый компонент является единственным, распараллелил в запросах (т.е. один поток только обрабатывает сообщения для компонента).

У меня Есть много сообщений, идущих назад и вперед. Для ограниченного использования я действительно любил бы мочь к, просто ставят вызов сообщения в очередь с параметрами, вместо того, чтобы иметь необходимость определить мой собственный параметр, обертывание метода / разворачивающий только ради выполнения большого количества вызовов admnistrative. Я также не всегда хочу обойти очередь, и я определенно не хочу, чтобы сервис отправки ожидал другого сервиса для ответа.

Кто-либо знает о способе прервать вызов метода? Некоторый способ использовать TransparentProxy / Виртуальный Прокси для этого?;) ServicedComponent? Я хотел бы, чтобы это было как можно меньше служебным ;)

12
задан TomTom 5 May 2010 в 16:05
поделиться

2 ответа

Как насчет использования лямбда-выражений?

Я имею в виду, почему бы вам не создать некоторую очередь и не обработать их так, как

while (!queue.Empty) 
{
    Action action = queue.Pop();
    action(); // this calls your action
}

. Вы можете добавлять действия очень просто:

Queue.Add( ()=>{  /* any code you wish here */})

Это всего лишь подсказка, я не уверен, есть ли какой-нибудь класс Queue, но создать его (и потокобезопасный!) Самостоятельно должно быть довольно просто.

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

Pz, разработчик TaskConnect

13
ответ дан 2 December 2019 в 20:16
поделиться

DynamicProxy, который является частью проекта Castle, позволяет перехватывать члены объекта без некоторых типичных проблем с маршалингом

http://www.castleproject.org/projects/dynamicproxy/

Вы можете использовать его для перехвата вызовов ваших методов и затем делать с ними то, что вы хотите.

1
ответ дан 2 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: