У меня есть программа WPF, которая открывает документ Word в процессе и ждет завершения процесса перед продолжением. Если я оставлю Word открытым в течение нескольких часов, моя программа выйдет из строя.Process.Start приводит к сбою моей программы WPF
Я вижу, что память для моего приложения постоянно растет, пока процесс запущен.
Я попробовал 2 способа сделать это, и у обоих проблемы одинаковые.
Way # 1
public void ShowExternalReference(string externalRef, bool waitForCompletion)
{
if (!string.IsNullOrEmpty(externalRef))
{
using (var p = Process.Start(@externalRef))
{
if (waitForCompletion)
{
// Wait for the window to finish loading.
p.WaitForInputIdle();
// Wait for the process to end.
p.WaitForExit();
}
}
}
}
Way # 2
public void ShowExternalReference(string externalRef, bool waitForCompletion)
{
if (!string.IsNullOrEmpty(externalRef))
{
using (var p = Process.Start(@externalRef))
{
if (waitForCompletion)
{
while (!p.HasExited)
{
Thread.Sleep(1000);
}
}
}
}
}
Любые идеи?
В какой теме вы это называете? Вы не блокируете поток диспетчера WPF, не так ли? –
Невозможно воспроизвести. Кроме того, это ненадежно, если пользователь открывает другие документы Word, процесс _ не выходит_, пока все документы не будут закрыты. Вы считаете [размещение Word Viewer в WPF] (https://code.msdn.microsoft.com/office/CSVSTOViewWordInWPF-db347436) [или анализ содержимого слова и показ в WPF] (http://www.codeproject.com/Статьи/649064/Show-Word-файл-в-WPF)? – kennyzx
Как вы упомянули, память постоянно увеличивается, поэтому это, безусловно, похоже на случай утечки памяти и сбоя из-за чего-то вроде OOM, проверьте один из моих ответов, связанных с отладкой OOM: http://stackoverflow.com/questions/25875091/in-i-use-socket-io-why-i-got-an-error-an-unhandled-exception-of-type-system/26042456 # 26042456 –