Process.Start блокируетсяC#

Место общения программистов C#
Ответить
Anonymous
 Process.Start блокируется

Сообщение Anonymous »

Я вызываю Process.Start, но он блокирует текущий поток.

Код: Выделить всё

pInfo = new ProcessStartInfo("C:\\Windows\\notepad.exe");

// Start process
mProcess = new Process();
mProcess.StartInfo = pInfo;
if (mProcess.Start() == false) {
Trace.TraceError("Unable to run process {0}.");
}
Даже когда процесс закрыт, код больше не отвечает.

Но Process.Start действительно должен заблокировать? Что происходит?

(Процесс запускается правильно)


Код: Выделить всё

using System;
using System.Diagnostics;
using System.Threading;
using System.Windows.Forms;

namespace Test
{
class Test
{
[STAThread]
public static void Main()
{
Thread ServerThread = new Thread(AccepterThread);
ServerThread.Start();

Console.WriteLine (" ---  Press ENTER to stop service ---");
while (Console.Read() < 0) { Application.DoEvents(); }

Console.WriteLine("Done.");
}

public static void AccepterThread(object data)
{
bool accepted = false;

while (true) {
if (accepted == false) {
Thread hThread = new Thread(HandlerThread);
accepted = true;
hThread.Start();
} else
Thread.Sleep(100);
}
}

public static void HandlerThread(object data)
{
ProcessStartInfo pInfo = new ProcessStartInfo("C:\\Windows\\notepad.exe");

Console.WriteLine("Starting process.");

// Start process
Process mProcess = new Process();
mProcess.StartInfo = pInfo;
if (mProcess.Start() == false) {
Console.WriteLine("Unable to run process.");
}
Console.WriteLine("Still living...");
}
}
}
Вывод на консоль:


--- Нажмите ENTER, чтобы остановить службу - --
Запускаем процесс.




Нашёл:

[STAThread]

Выполняет блокировку Process.Start. Я читаю STAThread и многопоточность, но не могу связать эти концепции с поведением Process.Start.

AFAIK, STAThread требуется для Windows.Form. Как обойти эту проблему при использовании Windows.Form?



Новости к черту:

Если я пересоберу свое приложение, первый запуск приложения будет работать правильно, но если я остановлю отладку и снова перезапущу iy, проблема возникнет. .

Проблема не возникает при запуске приложения без отладчика.

Подробнее здесь: https://stackoverflow.com/questions/307 ... s-blocking
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»