Merhaba arkadaşlar,

C# .NET 4.5'da geliştirdiğim bir Kurulum uygulamasıyla ilgili olarak; Async BackgroundWorker kullanmaktayım ve içerisinde Download,Process.Run işlemleri mevcuttur.

Tam olarak nedenini bulamadığım birkaç sorundan dolayı Bazı bilgisayarlarda BackgroundWorker çalışmaktayken Bazı bilgisayarlarda çalışmıyor. Permission tarzı bir durum mudur yoksa başka bir etkeni varmıdır. Çözemedim Async olmasından kaynaklı olabilir mi, İşlemcinin Async işlemi yerine getirememe durumu v.s.

Proje içerisinde olup bitenler; 1- MySQL'e bağlanmak veri yollamak.(ÇALIŞIYOR) 2- Klosör oluşturmak - (ÇALIŞIYOR) 3- Ortam değişkenlerine ve Regedit'e veri yazmak. (Çalışıyor) 4- Restart kontrlü (ÇALIŞIYOR) 5- Dosya İndirmek (bgWorker ile yapıyorum. Herzaman çalışmıyor) 6- Zip Çözmek (bgWorker ile yapıyorum. Herzaman çalışmıyor) 7- Masaüstüne simge oluşturmak. (bgWorker ile yapıyorum. Herzaman çalışmıyor) 8- SQL Kurmak amacıyla Dosya çalıştırmak (bgWorker ile yapıyorum. Herzaman çalışmıyor) 9- FTP'e bağlanmak Dosya çekmek (bgWorker ile yapıyorum. Herzaman çalışmıyor) 10- Firewall'e Port eklemek (bgWorker ile yapıyorum. Herzaman çalışmıyor)

Kısaca bazı kodlar private async void DoWork_KurulumBasla(object sender, DoWorkEventArgs e) { #region ÖN TANIM / GEÇİCİ DOSYA KONTRLÜ

        try
        {
            Diger.Logla("bg*İşlem-> GeciciKlasorVarmi(" + TANIMLAR.GeciciDizin + ")");

            bool GeciciKlosurVarmi = Directory.Exists(@TANIMLAR.GeciciDizin);
            if (!GeciciKlosurVarmi) Directory.CreateDirectory(TANIMLAR.GeciciDizin);
            Diger.Logla("bg*T-> GeciciKlasorVarmi("+TANIMLAR.GeciciDizin+")");

        }
            catch (Exception ex)
        {
            ItemBilgiDegistir(clist_Kurulum.Items[0], "HATA:" + TANIMLAR.GeciciDizin + " Oluşturulamadı. " + ex.Message, IslemTip.YAZI);
            Calisiyor = false;
            Diger.DurumMailGonder(ex.Message);
            Diger.Logla("bg*Hata-> GeciciKlasorVarmi("+TANIMLAR.GeciciDizin+") -> " + ex.Message + ex.InnerException);
            return;

        }
        #endregion

          Diger.Logla("bg*İşlem-> WinIceberg_IndirKur(InternettenIndirilecek)");
            try
            {
                #region InternetVarmi
                try
                {
                    clsSplash.EkraniCagir(sf.SplashScreenCommand.BaslikDegistir, "İnternet Kontrol Ediliyor...");
                    if (!Diger.InternetVarmi())
                    {
                        clsSplash.EkraniKapat();
                        ItemBilgiDegistir(clist_Kurulum.Items[0], "HATA: Internet Yok.", IslemTip.YAZI);
                        Diger.Logla("bg/clsSplash*Hata-> InternetYok");
                        Calisiyor = false;
                        return;
                    }
                    else
                    {
                        clsSplash.EkraniKapat();
                        Diger.Logla("bg/clsSplash*Tamam-> InternetVar");
                    }

                }
                catch (Exception ex)
                {
                    Diger.Logla("bg*Hata-> InternetVarmi() " + ex.Message + ex.InnerException);

                }
                #endregion

             ItemBilgiDegistir(clist_Kurulum.Items[0], true, IslemTip.EVETHAYIR);
                if (AnaDegiskenler.WINICEINDIR)
                {

                    DosyaIndirmeSonucu = await Dosyalari_Indir(TANIMLAR.DosyaAdi, "WinIceberg.Zip", TANIMLAR.GeciciDizin + @"\\WinIceberg.Zip", "Dosya İndiriliyor");
                    if (DosyaIndirmeSonucu)
                    {
                        ItemBilgiDegistir(clist_Kurulum.Items[0], "Orka SQL İndirildi", IslemTip.YAZI);
                        ItemBilgiDegistir(clist_Kurulum.Items[0], "On", IslemTip.CHECKSTATE);
                    }
                }
            }
            catch (Exception ex)
            {
                Diger.Logla("bg*Hata-> Dosyalari_Indir()" + ex.Message + ex.InnerException);
            }

        #region #FireWall Ayarları
        try
        {
            Invoke_DegerYolla(pg_orkakur, "Description", "Güvenlik Duvarı Ayarları yapılıyor.");
            Diger.FireWallAyarla(txt_serveradi.Text);
            Invoke_DegerYolla(pg_orkakur, "Description", "Güvenlik Duvarı Ayarları yapıldı.");
            Diger.Logla("bg*T-> FireWallAyarla()");

        }
        catch (Exception Hata)
        {

            MessageBox.Show("HATA: Firewall" + Hata.Message);
            Diger.DurumMailGonder("HATA: Firewall" + Hata.Message);
            Diger.Logla("bg*Hata->FireWallAyarla() ->" + Hata.Message + Hata.InnerException);

        }

                  int BaslamaID = SQLKurulumBasla(SQLKurulacakDosyaAdi);

                    var Kurulum_State = Process.GetProcessById(BaslamaID);
                    if (Kurulum_State != null)
                        Kurulum_State.WaitForExit();

                    ItemBilgiDegistir(clist_Kurulum.Items[3], "SQL SERVER Kuruldu.", IslemTip.YAZI);
                    Invoke_DegerYolla(pg_orkakur, "Description", "SQL SERVER Kuruldu...");
                    clsSplash.EkraniKapat();

------------ BGWORKERİN BİR KISMI SON BGWORKERDA ÇALIŞAN BİRKAÇ KOD.. SÜPHELENDİĞİM

    public int SQLKurulumBasla(String DosyaAdi)
    {
        try
        {
            Islem.StartInfo.FileName = @DosyaAdi;
            string[] Parca = new String[] { "1", "2" };
            Parca[0] = @"/SAPWD=" + "" + txt_saSifre.Text + "";
            Parca[1] = " /SkipRules=RebootRequiredCheck /SECURITYMODE=SQL /FEATURES=SQLENGINE,SSMS /IACCEPTSQLSERVERLICENSETERMS /Action=Install /Q /ERRORREPORTING=1 /INSTANCENAME=" + txt_serveradi.Text + " /ConfigurationFile=" + TANIMLAR.GeciciDizin + "ConfigurationFile.INI";
            Islem.StartInfo.Arguments = Parca[0] + Parca[1];
            Islem.StartInfo.UseShellExecute = true;
            Islem.StartInfo.Verb = "runas";
            Islem.Start();
            Diger.Logla("SQLKurulumParametreleri -> \\n: " + Islem.StartInfo.FileName + Islem.StartInfo.Arguments);
            return Islem.Id;
        }
        catch (Exception ex)
        {
            MessageBox.Show("HATA: SQL Kurulum Basla -" + ex.Message);
            Diger.Logla("H-> SQLKurulumBasla(String DosyaAdi):" + ex.Message + ex.InnerException);

            return 0;
        }
    }
-----------

private async Task<bool> Dosyalari_Indir(string Adres,string GelenDosyaAdi,string DosyaKonumu,string Aciklama) { ServicePointManager.DefaultConnectionLimit = 20; try {

                WebClient webClient = new WebClient();
                webClient.OpenRead(Adres);
                long WebDosyaBoyutu = Convert.ToInt64(webClient.ResponseHeaders["Content-Length"]);

                if (System.IO.File.Exists(DosyaKonumu))
                {
                    long DosyaBoyutu = new System.IO.FileInfo(DosyaKonumu).Length;
                    if (DosyaBoyutu == WebDosyaBoyutu)
                        return true;
                    else
                        System.IO.File.Delete(DosyaKonumu);
                }

                Invoke_DegerYolla(pg_orkakur, "Description", Aciklama +" [" + GelenDosyaAdi + "]:  " + Diger.BoyutHesapla(WebDosyaBoyutu,false));
                webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
                webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(AsyncYuklemeEvent);
                Diger.Logla("bg*İşlem->Dosyalari_Indir(string Adres,string GelenDosyaAdi,string DosyaKonumu,string Aciklama) => " + Adres + "=>" + GelenDosyaAdi + "=>" + DosyaKonumu + "=>" + Aciklama);
                await webClient.DownloadFileTaskAsync(new Uri(Adres), @TANIMLAR.GeciciDizin + GelenDosyaAdi);
                return true;
            }
        catch (Exception e)
        {
            Diger.Logla("bg*Hata->Dosyalari_Indir() ->" + e.Message + e.InnerException);

            MessageBox.Show(e.Message);
            return false;
        }

    }

soruldu: 12 Eyl '15, 14:20

r3boot's gravatar image

r3boot
20661017
cevap kabul oranı: 50%

değiştirildi: 12 Eyl '15, 14:22

Hata olarak ne veriyor ?

(12 Eyl '15, 16:11) ArnesTwin ArnesTwin's gravatar image

Malesef hata yok. Hic çalışma yok gibi görünüyor

permanent link

cevaplandı: 13 Eyl '15, 03:40

r3boot's gravatar image

r3boot
20661017
cevap kabul oranı: 50%

Workerların tetiklendiğinden emin misiniz ? Söylediğiniz normal bir durum değil. Mutlaka atladığınız bir yer olmalı.

(13 Eyl '15, 14:26) ArnesTwin ArnesTwin's gravatar image

Run ediyorum. Permissinlevel ile ilgili olabilir diye Düşünüyorum birde sertifika ile imzalayip deneyeceğim. Teşekkürler

(13 Eyl '15, 14:32) r3boot r3boot's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1
×1

Soruldu: 12 Eyl '15, 14:20

Görüntüleme: 262 kez

Son güncelleme: 13 Eyl '15, 14:32

Benzer sorular

powered by BitNami OSQA