Quantcast
Channel: BTSoru.com - Bilisim ve Yazilim Teknolojileri Soru/Cevap Platformu - latest questions
Viewing all articles
Browse latest Browse all 4270

Backgroundworker ve Blocklama ?

$
0
0

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;
        }

    }

Viewing all articles
Browse latest Browse all 4270

Trending Articles


huddam daveti


Tekasür Suresi


"Yâ Kuddûs!" Esması Havâs ve Esrârı


Kasemi Mübelliğa


Peri44


Kuvvetli muhabbet ve aşk tılsımı


El-Mütekebbir


Papaz büyüsü


SCCM 2012 Client Installation issue


Zilhicce Ayının Namaz Duası ÖNEMLİ