// [Method] 원격연결 객체 생성
        private async void CreateRdpClient(RdpHost host)
        {
            await dispatcher.Invoke(async() =>
            {
                string[] ServerIps = host.Server.Split(':');

                // 원격연결 표시 폼 생성
                Form rdpFrom        = new Form();
                rdpFrom.ShowIcon    = false;
                rdpFrom.Name        = host.Server.Replace(".", "");
                rdpFrom.Text        = $"({rdpFrom.Name}) {host.Description}";
                rdpFrom.Size        = new System.Drawing.Size(1024, 768);
                rdpFrom.FormClosed += new FormClosedEventHandler(this.rdpForm_Closed);

                var rdp = new RdpControl();

                // 이미 연결된 경우
                if (rdpConnects.ContainsKey(rdpFrom.Name))
                {
                    Status = $"({host.Server}) 이미 연결 되었습니다.";
                    return;
                }
                // 연결 컬렉션에 추가
                rdpConnects.Add(rdpFrom.Name, rdpFrom);

                // 원격연결 초기화 설정
                ((System.ComponentModel.ISupportInitialize)(rdp)).BeginInit();
                rdp.Dock            = DockStyle.Fill;
                rdp.Enabled         = true;
                rdp.OnConnecting   += new EventHandler(this.rdp_OnConnecting);
                rdp.OnDisconnected += new IMsTscAxEvents_OnDisconnectedEventHandler(this.rdp_OnDisconnected);
                rdp.OnConnected    += Rdp_OnConnected;
                rdpFrom.Controls.Add(rdp);
                rdpFrom.WindowState = FormWindowState.Maximized;
                rdpFrom.Show();
                ((System.ComponentModel.ISupportInitialize)(rdp)).EndInit();

                // 원격연결 객체 속성 설정
                rdp.Name     = rdpFrom.Name;
                rdp.Server   = ServerIps.Length == 1 ? host.Server : ServerIps[0];
                rdp.UserName = host.UserName;
                rdp.AdvancedSettings7.RDPPort = ServerIps.Length == 1 ? 3389 : Convert.ToInt32(ServerIps[1]);
                //rdp.AdvancedSettings7.ContainerHandledFullScreen = 1;
                rdp.AdvancedSettings7.SmartSizing          = host.SmartSizing;
                rdp.AdvancedSettings7.EnableCredSspSupport = true;
                rdp.AdvancedSettings7.ClearTextPassword    = host.ClearTextPassword;
                //rdp.AdvancedSettings7.PublicMode = false;
                rdp.ColorDepth = host.ColorDepth;
                rdp.FullScreen = host.FullScreen;
                //rdp.DesktopWidth = rdpFrom.ClientRectangle.Width;
                //rdp.DesktopHeight = rdpFrom.ClientRectangle.Height;
                var screenRect    = Screen.PrimaryScreen.Bounds;
                rdp.DesktopWidth  = screenRect.Width;
                rdp.DesktopHeight = screenRect.Height;

                // 연결
                rdp.Connect();
                await Task.Delay(100);
            });
        }
 // [Method] 원격서버 연결
 private void ExecuteConnect(RdpHost host)
 {
     if (host == null)
     {
         return;
     }
     CreateRdpClient(host);
 }
 // [Method] 원격서버 삭제하기
 private void ExecuteDelete(RdpHost host)
 {
     if (host == null)
     {
         return;
     }
     Util.Instance.RemoveHost(host);
     HostList = new ObservableCollection <RdpHost>(Util.Instance.HostList);
 }
        // [Method] 원격서버 연결 끊기
        private void ExecuteDisconnect(RdpHost host)
        {
            if (host == null)
            {
                return;
            }
            var key = host.Server.Replace(".", "");

            if (rdpConnects.ContainsKey(key))
            {
                var find = rdpConnects[key];
                find.Close();
                find.Dispose();
            }
        }
        // [Method] 원격서버 추가, 수정
        private async void ExecuteAdd(RdpHost host)
        {
            var view      = new RdpHostDialog();
            var viewmodel = view.DataContext as RdpHostDialogViewModel;

            viewmodel.Host = host;
            var result = await DialogHost.Show(view, "RootDialog", (object s, DialogClosingEventArgs e) =>
            {
                if (e.Parameter == null)
                {
                    return;
                }
                var rdpHost = e.Parameter as RdpHost;
                Util.Instance.AddHost(rdpHost);
                HostList = new ObservableCollection <RdpHost>(Util.Instance.HostList);
            });
        }