Редактировать (снова): Позвольте мне упростить мою проблему. У меня есть служба Windows, которая предоставляет некоторые конечные точки WCF с помощью методов, таких как:
int ExecuteQuery(string query) {
// asynchronously execute query that may take 1 second to 20 minutes
return queryId;
}
string GetStatus(int queryId) {
// return the status of the query (# of results so far, etc)
}
Каков наилучший способ реализации метода ExecuteQuery
? Должен ли я просто позвонить ThreadPool.QueueUserWorkItem
, чтобы получить мой запрос?
Обратите внимание, что фактическая работа за выполнением запроса выполняется с помощью черного ящика с балансировкой нагрузки. Я хочу, чтобы у меня было несколько запросов одновременно.
Аналогом является веб-браузер, который загружает несколько файлов одновременно, и у вас есть менеджер загрузок, который может отслеживать состояние каждого файла.