Я пытаюсь этим кодом преобразовать документ с помощью aspose word, я пытаюсь завершить процесс преобразования документа, когда он занимает слишком много времени (поскольку это приводит к утечке памяти и съедает все системные ресурсы), я никогда не смотрел на threading
или async
раньше, но теперь, когда наш рабочий сервер сломался, я ищу быстрое решение, прежде чем копать глубже,
Это то, что я пробовал, но это убивает поток, но сохраняет все ресурсы, я прочитал несколько сообщений из Что не так с использованием Thread.Abort(), но я не уверен, как лучше двигаться дальше, следует ли мне использовать Task и async, но я не знаю, как их использовать в этом контексте,
RunWithTimeout(() =>
{
status = AsposeConversion.ConvertToPDF(licensePath, fileName);
}, TimeSpan.FromMilliseconds(1000 * 60 * 4));
public static bool RunWithTimeout(ThreadStart threadStart, TimeSpan timeout)
{
Thread workerThread = new Thread(threadStart);
workerThread.Start();
bool finished = workerThread.Join(timeout);
if (!finished)
workerThread.Abort();
return finished;
}
Должен ли я создать новый процесс? но тогда как я могу отключить его или запустить в нем строку кода преобразования.
Изменить
Извините за путаницу, я сказал, что это занимает слишком много времени, но на самом деле это никогда не возвращается даже в течение 4 часов, которые я тестировал до сих пор.
AsposeConversion.ConvertToPDF
— это метод блокировки, верно? - person Yogster   schedule 22.12.2014AsposeConversion
. Если это займет слишком много времени, удалите этот домен приложения. Это убьет поток, а также выгрузит сборку Aspose и освободит все ресурсы, которые она выделяет. См. раздел Домены приложений. - person Jim Mischel   schedule 22.12.2014