コード例 #1
0
        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);
            }
        }