private async void btnStopService_Click(object sender, RoutedEventArgs e)
        {
            LoaderWindow.Show(this, "توقف سرویس ...");

            var result = await Task.Run(() =>
            {
                var svcManager = new Service.Manager();
                return(svcManager.StopService(App.ProxyService.ServiceName, 10000));
            });

            App.ProxyService.IsRunning = !result;

            LoaderWindow.CloseLoader();

            if (result == false)
            {
                MessageBox.Show("توقف سرویس امکان‌پذیر نیست، برای بررسی خطای رخ داده، رخدادهای نرم‌افزار را بررسی کنید.", "خطای توقف سرویس");
            }
        }
        private async void btnMakeCert_Click(object sender, RoutedEventArgs e)
        {
            var success = false;

            if (String.IsNullOrEmpty(certModel.CommonName))
            {
                MessageBox.Show("CN را وارد کنید.", "خطای پردازش");
                return;
            }

            LoaderWindow.Show(this, "صدور گواهی ...");

            var svcManager = new Service.Manager();

            if (svcManager.StopService(App.ProxyService.ServiceName, 10000))
            {
                App.ProxyService.IsRunning = false;

                try
                {
                    if (Directory.Exists(keysFolder))
                    {
                        FileExtentions.DeleteFilesExept(keysFolder, "dh.pem");
                    }
                    else
                    {
                        Directory.CreateDirectory(keysFolder);
                    }

                    using (var fsDb = File.Create(dbPath)) { };
                    using (var fsSr = File.Create(serialPath))
                    {
                        var data = Encoding.Default.GetBytes("01\n");
                        fsSr.Write(data, 0, data.Length);
                        fsSr.Close();
                    };

                    if (await MakeIssuerCA() && await MakeCsr(true) && await MakeCsr(false))
                    {
                        if (await MakeCsr(true))
                        {
                            success = true;
                            FileExtentions.DeleteFilesExept(keysFolder, "dh.pem", "ca.crt", "server.crt", "server.key", "client.crt", "client.key");
                            MessageBox.Show("صدور گواهی با موفقیت انجام شد.\n یادآوری: تنظیمات کلاینت را دوباره دریافت کنید.", "صدور گواهی");
                        }
                    }
                }
                catch (Exception ex)
                {
                    Log.Write(MethodInfo.GetCurrentMethod(), ex);
                    if (!success)
                    {
                        MessageBox.Show("در عملیات صدور گواهی خطایی رخ داده است، برای آگاهی بیشتر رخدادهای نرم‌افزار را بررسی کنید.", "خطای صدور گواهی");
                    }
                }

                LoaderWindow.UpdateStatus("اجرای سرویس ...");
                App.ProxyService.IsRunning = svcManager.StartService(App.ProxyService.ServiceName, 10000);
                LoaderWindow.CloseLoader();

                if (success)
                {
                    this.Close();
                }
            }
        }