Запустить стороннее приложение и вернуть себе управление - C#
Формулировка задачи:
Консольное приложение запускает с параметром сторонний консольный процесс, который в свою очередь запускает нужное мне приложение. После запуска этого приложения запустившая его консоль остаётся висеть в процессах. Можно ли как-то после запуска этого приложения вернуть себе управление, чтобы закрыть эту консоль?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
const string rus = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя ";
const string lat = "abvgdeYZzijklmnoprstufhcCWVXyxEUA_";
string exe = System.Reflection.Assembly.GetExecutingAssembly().Location;
string tut = Path.GetDirectoryName(exe);
string sourse = Environment.GetCommandLineArgs()[1].ToLower();
//string sourse = "ТУ_mem4_uuk.bit";
string ext = Path.GetExtension(@sourse).ToLower();
string dest = Path.GetFileName(@sourse);
//string sourse = "непейводыизунитаза";
foreach (char ch in dest)
if (rus.Contains(ch))
{
char lch = lat[rus.IndexOf(ch)];
dest=dest.Replace(ch, lch);
}
dest = tut + '\\' + dest;
string impactPath = File.ReadAllLines(tut + '\\' + "impact.p")[0];
File.Copy(sourse, dest, true);
try
{
Process pr = new Process();
pr.StartInfo.FileName = impactPath;
switch (ext)
{
case ".jed":
{
pr.StartInfo.Arguments = "-j " + dest;
break;
}
case ".bit":
{
pr.StartInfo.Arguments = "-b " + dest +" -mode sserial";
break;
}
default:
{
pr.StartInfo.Arguments = "-j " + dest;
break;
}
}
pr.Start();
}
catch { };
//Вот сюда уже не попадаю, так как запущенный мной процесс перехватывает управление
Process[] impact = Process.GetProcessesByName("_impact");
foreach (Process p in impact)
p.Kill();
}
}
}
Такшта вот.
Полезно иногда не получить сразу ответ на животрепещущий вопрос. Вынуждает посветить фонариком внутри черепушки. Кажется, слышал где-то выражение "многопоточные приложения". Собрал походную котомку, пошёл искать ответов.
Такшта, не поминайте лихом, если затеряюсь в дебрях собственного невежества.
Решение задачи: «Запустить стороннее приложение и вернуть себе управление»
textual
Листинг программы
finally{
Process[] impact = Process.GetProcessesByName("_impact");
foreach (Process p in impact)
p.Kill();
}