ProcessStartInfo работает на одном компьютере, но не запущен на другом

#c# #pdf #processstartinfo

#c# #PDF #processstartinfo

Вопрос:

Следующий код отлично работает на моем компьютере, но зависает на компьютере office

         ProcessStartInfo info = new ProcessStartInfo();
        info.Verb = "print";
        info.FileName = @"c:temp"   filename;
        info.CreateNoWindow = true;
        info.WindowStyle = ProcessWindowStyle.Hidden;

        Process p = new Process();
        p.StartInfo = info;
        p.Start();

        p.WaitForInputIdle();
        System.Threading.Thread.Sleep(3000);
        if (false == p.CloseMainWindow())
            p.Kill();
  

Пожалуйста, помогите

Комментарии:

1. «Не работает» — как? Присутствует ли целевой файл на офисном компьютере? Существует ли вообще C:temp папка? Имеет ли пользователь, от имени которого вы запускаетесь, права на файл в C:temp ?

2. Папка создана, и файл также присутствует, но он зависает при попытке запустить этот код.

3. Процесс зависает? У вас нет диалогового окна настроек принтера, которое не отображается?

4. да, но он зависает со значком занятости Windows, и ничего не происходит, экран тускнеет, и приходится закрывать приложение.

5. Удалите строку «CreateNoWindow= true» и попробуйте еще раз, это может помочь вам устранить проблему.

Ответ №1:

Некоторые компьютеры работают медленнее, чем другие, поэтому процесс завершается до его завершения. Увеличение времени ожидания потока устранило проблему.