Я использую версию 2.
Одна из причин использовать фигурные скобки становится более понятной, если у вас нет другого.
if(SomeCondition)
{
DoSomething();
}
Если затем вам нужно добавить еще одну строку кода, у вас меньше шансов иметь проблему:
if(SomeCondition)
{
DoSomething();
DoSomethingElse();
}
Без фигурных скобок вы могли бы сделать это:
if(SomeCondition)
DoSomething();
DoSomethingElse();
Похоже, что проблема, которую вы видите, имеет другую причину, потому что класс Process
не уничтожает никакие процессы, запущенные с использованием Process.Start
, когда ваш приложение завершает работу.
Посмотрите этот простой пример программы, калькулятор останется открытым:
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
Process.Start(@"C:\windows\system32\calc.exe");
}
}
Нет причин, по которым процесс, запущенный с Process.Start
, должен автоматически завершиться, когда пусковая установка выходит. Я предполагаю, что вы делаете что-то странное в средстве обновления.
Я писал средство обновления, делающее именно такие вещи раньше, и оно было нормальным.
Например:
Launcher.cs:
using System;
using System.Diagnostics;
class Launcher
{
static void Main()
{
Console.WriteLine("Launching launchee");
Process.Start("Launchee.exe");
Console.WriteLine("Launched. Exiting");
}
}
Launchee.cs:
using System;
using System.Threading;
class Launchee
{
static void Main()
{
Console.WriteLine(" I've been launched!");
Thread.Sleep(5000);
Console.WriteLine(" Exiting...");
}
}
Скомпилируйте их по отдельности и запустите Launcher.exe. Процесс "лаунчи" определенно длится дольше, чем пусковая установка.
Я писал программу обновления, делающую именно такие вещи раньше, и это нормально.Например:
Launcher.cs:
using System;
using System.Diagnostics;
class Launcher
{
static void Main()
{
Console.WriteLine("Launching launchee");
Process.Start("Launchee.exe");
Console.WriteLine("Launched. Exiting");
}
}
Launchee.cs:
using System;
using System.Threading;
class Launchee
{
static void Main()
{
Console.WriteLine(" I've been launched!");
Thread.Sleep(5000);
Console.WriteLine(" Exiting...");
}
}
Скомпилируйте их оба по отдельности и запустите Launcher .Exe. Процесс "лаунчи" определенно длится дольше, чем пусковая установка.
Я писал программу обновления, делающую именно такие вещи раньше, и это нормально.Например:
Launcher.cs:
using System;
using System.Diagnostics;
class Launcher
{
static void Main()
{
Console.WriteLine("Launching launchee");
Process.Start("Launchee.exe");
Console.WriteLine("Launched. Exiting");
}
}
Launchee.cs:
using System;
using System.Threading;
class Launchee
{
static void Main()
{
Console.WriteLine(" I've been launched!");
Thread.Sleep(5000);
Console.WriteLine(" Exiting...");
}
}
Скомпилируйте их оба по отдельности и запустите Launcher .Exe. Процесс "лаунчи" определенно длится дольше, чем пусковая установка.
Просто мысль из моей туманной памяти, но я, кажется, помню, как недавно обсуждал, что когда метод Process.Start вызывается из формы, порожденный процесс имеет какую-то зависимость ( не уверен, что, почему и как, память немного нечеткая).
Чтобы справиться с этим, был установлен флаг, который фактически вызывался из метода Main () приложения после выхода из основной формы / приложения, и что если процесс был запущен из метода Main (), все сработало отлично.
Просто подумал, как я уже сказал, это чисто из памяти, но некоторые из опубликованных здесь примеров вызываются из метода Main () консольного приложения что-то подтолкнуло.
Надеюсь, у вас все хорошо.