Я получаю исключение для своего кода на стороне сервера, который обслуживает приложение silverlight,
Win32Exception - такой интерфейс не поддерживается
Наш код C # на стороне сервера запускает отдельный процесс для короткой задачи из-за того, что сторонний dll не является потокобезопасным. Таким образом, приведенная выше ошибка возникает в части кода, подобной этой,
Process process = new Process();
ProcessStartInfo processStartInfo = new ProcessStartInfo();
processStartInfo.CreateNoWindow = true;
processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
processStartInfo.FileName =
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin", "PreviewGenerator.exe");
process.StartInfo = processStartInfo;
process.Start(); // THIS IS WHERE THE EXCEPTION OCCURS
process.WaitForExit();
Процесс PreviewGenerator.exe не запускается, когда он не работает, исключение происходит, когда комментарий выше.
UPDATE:
Я запустил монитор процесса на сервере IIS при возникновении проблемы. Это показывает, что процесс w3wp делает это,
Thread Create
Access the file PreviewGenerator.exe
Hive unloaded (this is the registry)
Thread Exit
И он делает это до вызова другого процесса. Если я сравниваю это с журналом монитора процесса, когда он работает, он делает это,
Thread Create
Access the file PreviewGenerator.exe
Process Start
Does heaps of stuff with PreviewGenerator.exe including reading / writing / registry, etc.
Process Exit
Hive unloaded
Thread Exit
Но монитор процесса не показывает никакой информации о том, почему первый случай не работает.
Есть ли способ узнать, почему нить преждевременно завершается?
Также я думаю, что эта проблема связана с тем, что мой сервер загружается больше и используется гораздо больше памяти. Как я могу доказать это?