public static void Main(string[] args) { try { // Серверный экземпляр приложения. Если он создан не будет, // скорее всего он уже создан, значит текущий экземпляр - не первый. IInstance instance = null; try { // Пытаемся зарегистрировать сервер. InstanceHelper.RegisterServer( Settings.Environment.ServerPort, Settings.Environment.ApplicationName, new AppInstance()); } catch (RemotingException) { // Зарегистрировать сервер не удалось - пытаемся подключиться к серверу. instance = InstanceHelper.GetObject( Settings.Environment.ClientPort, Settings.Environment.ServerPort, Settings.Environment.ApplicationName); // Подключиться к серверу не удалось - что-то не работает. if (instance == null) { throw new CantGetServerAppInstanceException(); } } if (instance == null) { // Если это первый экземпляр приложения, запускаем его... Application.ThreadException += Application_ThreadException; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); using (Core.Instance) { // Запускаем основное окно... Core.Instance.Run(args); } } else { // Если это не первый экземпляр приложения, нужно передать в первый // информацию об открываемых файлах. instance.Message(args.Length == 0 ? null : args); } } catch (Exception e) { ShowErrorMessage(e.GetType().Name, e.Message, e.StackTrace); } catch { ShowErrorMessage(string.Empty, string.Empty, string.Empty); } }