У меня есть приложение, которое планирует несколько задач, которые вызывают разные веб-сервисы, некоторые из которых имеют один и тот же веб-сервис, но другой метод.Каждая задача выполняется с интервалом, и каждая задача выполняется в своем собственном потоке.Чтобы получить ссылку на веб-сервис, у меня есть сгенерированный прокси-класс wsdl.exe, который создается внутри каждой из задач и всегда располагается.Однако при запуске приложения задачи фактически ожидают друг друга при запросах на обслуживание, веб-служба не обрабатывает запрос на обслуживание от задачи y до того, как его запрос на обработку завершен из задачи x (я могу видеть это, поскольку вызов службы из задачи x может занять5 минут и задача y 100 миллисекунд, однако, если y запускается, когда x выполняется, он завершается через 100 миллисекунд после x).
Это код из задачи (работающей в своем собственном потоке):
public class TaskX : TaskWrapper
{
public TaskX(Guid id, string name, EventQueue eventqueue)
: base(id, name, eventqueue)
{
}
protected override void DoTask()
{
try
{
var factory = new ServiceReferenceFactory();
using (var reference = factory.GetServiceReference())
{
bool result;
bool isSpecified;
reference.Run(out result, out isSpecified);
}
}
}
}
Это код из фабричного метода, упомянутого выше:
public ProxyClassService GetServiceReference()
{
var refer = new ProxyClassServiceNamespace.ProxyClassService();
refer.Timeout = 1000 * 60 * 60;
return refer;
}
Кто-нибудь знает, почему я испытываю такое поведение?
РЕДАКТИРОВАТЬ:
Вот некоторые журналы из задач после того, как я добавил [ServiceBehavior (InstanceContextMode = InstanceContextMode.PerCall)] к реализации моей службы wcf.Я не внес никаких изменений в конфигурацию службы wcf, созданной в Visual Studio 2008.
15: 02 - Задача запущена: TaskXWithInternalException
15: 02 - Задача запущена: TaskYQuickOne
15: 02 - Задание завершено: TaskYQuickOne Время выполнения задачи: 00: 00: 00.1214762
15: 02 - Задание запущено: TaskZSlowOne
15: 03 - Задание запущено: TaskXWithInternalException
15:03 - Задание запущено: TaskYQuickOne
15: 05 - Задание завершено: TaskZSlowOne Время выполнения задачи: 00: 03: 11.6510947
15: 05 - Задание завершено: TaskYQuickOne Время выполнения задачи: 00: 02: 09.7311905
15: 06 - Задача запущена: TaskYQuickOne
15: 06 - Задача завершена: TaskYQuickOne Время выполнения задачи: 00: 00: 00.0546980