private async void ExitApp(object obj)
        {
            await DialogHost.Show(new NotifyDialog()
            {
                DataContext = new NotifyDialogViewModel()
                {
                    EnableYesNoQuestion = true,
                    NotifyTitle         = "Warning",
                    NotifyMessage       = "Do you want to leave now?"
                }
            }, "RootDialog", (object sender, DialogClosingEventArgs eventArgs) =>
            {
                if ((bool)eventArgs.Parameter == false)
                {
                    return;
                }

                if (mCommAdapter != null)
                {
                    mCommAdapter.Disconnect();
                    mCommAdapter.DataReceivedEvent -= CommAdapter_DataReceivedEvent;
                    mCommAdapter.ConnectEvent      -= CommAdapter_ConnectEvent;
                    mCommAdapter.DisconnectEvent   -= CommAdapter_DisconnectEvent;
                    mCommAdapter = null;
                }
                RefreshSettingUI();
                MainWindow.ExitAPP();
            });
        }
        private async void ExcuteUtilityDialog(object obj)
        {
            await DialogHost.Show(new UtilityRunDialog()
            {
                DataContext = new UtilityRunDialogViewModel(mCommState)
            }, "RootDialog", async (object sender, DialogClosingEventArgs eventArgs) =>
            {
                if (eventArgs.Parameter == null)
                {
                    return;
                }

                mCommState = (CommState)eventArgs.Parameter;

                switch (mCommState.Mode)
                {
                case CommMode.SerialPort:
                    {
                        mCommAdapter = new CommSerialPort();
                        break;
                    }

                case CommMode.UDP:
                    {
                        mCommAdapter = new CommUDP();
                        break;
                    }

                case CommMode.TCPClient:
                    {
                        mCommAdapter = new CommTCPClient();
                        break;
                    }

                case CommMode.TCPServer:
                    {
                        mCommAdapter = new CommTCPServer();
                        break;
                    }

                default:
                    {
                        break;
                    }
                }

                if (mCommAdapter == null)
                {
                    await DialogHost.Show(new NotifyDialog()
                    {
                        DataContext = new NotifyDialogViewModel
                        {
                            EnableYesNoQuestion = false,
                            NotifyTitle         = "Warning",
                            NotifyMessage       = "Please check Mode!"
                        }
                    }, "NotifyDialog");

                    return;
                }

                int ret = mCommAdapter.Connect(mCommState.Address, mCommState.Port);
                if (ret != 0)
                {
                    await DialogHost.Show(new NotifyDialog()
                    {
                        DataContext = new NotifyDialogViewModel
                        {
                            EnableYesNoQuestion = false,
                            NotifyTitle         = "Warning",
                            NotifyMessage       = "Please check Address and Port!"
                        }
                    }, "NotifyDialog");

                    return;
                }

                TransmissionMessage = "";
                ReceivedMessage     = "";

                mCommAdapter.ConnectEvent      += CommAdapter_ConnectEvent;
                mCommAdapter.DisconnectEvent   += CommAdapter_DisconnectEvent;
                mCommAdapter.DataReceivedEvent += CommAdapter_DataReceivedEvent;

                RefreshSettingUI();
            });
        }