Существует легко обойти эту проблему, которую я использовал для проекта.
У нас нет вашего кода, поэтому можно так много догадываться, но если вы не спешите получать ответ со своей части сервера WCF, вы можете фактически подпоточить свою вычислительную часть в обработчике сообщений и когда вы готовы - асинхронно - в некотором роде реагировать на ваш клиент. Таким образом, ваш обработчик сообщений может сразу ответить на ваш запрос клиента, и не произойдет ни одного тайм-аута потока.
Однако это означает, что вам, возможно, придется изменить способ работы вашего клиента/сервера, например, регулярно запрашивать у клиента запрос на сервер, если он сделан с вычислением.
Чтобы сделать простой суб-Threading в обработчике канала клиента вы могли бы сделать это:
public MyObject payload = null;
// Called to initiate the computation on the channel
public bool StartComputation(MyParamClass param)
{
// Reset payload to make sure 'IsComputationDone()' returns 'not ready'
payload = null;
// Start thread where computation is done
ThreadPool.QueueUserWorkItem(o => {
// Do computation with param
// Payload is set when computation is done
payload = doStuff(param);
}
return true;
}
// Called regularly to know if computation is ready
public bool IsComputationDone()
{
return payload != null;
}
// Finally get payload
public MyObject GetResult()
{
return IsComputationDone() ? payload : null;
}
Это идея. После этого вы можете добавить проверки, что вы не можете одновременно запускать два вычисления с одним и тем же каналом или, по крайней мере, управлять очередью вычислений. До вас, но это представляет собой базовый подход
Ваш метод WCF за 45 минут до его ответа? – DoctorMick
Связана ли эта нить с SQL-работами? Возможно, вы могли бы включить код, в котором выбрано исключение? –
Вероятно, вы должны разделить приложение на две части: службу Windows и службу WCF (или разместить службу WCF в службе выигрыша). Причина в том, что пул приложений может перерабатывать в любое время и, таким образом, прерывать работу до ее завершения. Выполнение этого в службе Windows намного более стабильно. – jgauffin