private static void ExecuteWithAllFwProcessesShutDown(string abbrevOfDefaultAppToStart,
Func<ProjectId> action)
{
s_fSingleProcessMode = true;
try
{
// Try to shut down other instances of FieldWorks gracefully so that their data
// folders can be moved.
RunOnRemoteClients(kFwRemoteRequest, requestor => requestor.CloseAllMainWindows());
List<Process> processes = ExistingProcesses;
foreach (Process proc in processes)
{
if (!proc.HasExited)
proc.CloseMainWindow();
if (!proc.HasExited)
{
proc.Kill();
proc.WaitForExit();
}
proc.Close();
}
ExecuteWithAppsShutDown(abbrevOfDefaultAppToStart, action);
}
finally
{
s_fSingleProcessMode = false;
}
}