Osman KURT

Kendime Not

C# Async Programlama - Task Kullanımı

Async programa denilince akla ilk gelen 2 seçenek vardır. 

  • Task 
  • Thread

Async programlama ile daha sıklıkla kullanılan Task yapısı thread yapısına göre üst seviyede. Task yapısını kullanarak daha gelişmiş işlemler yapabiliriz. Thread pooling yapısını otomatik olarak kullanıp birbiri ardına eklenebilecek olan işlemleri daha iyi organize etmektedir.

Aşağıdaki yapıda tasks adında türü task olan bir dizi oluşturduk. Bu dizi 3 task değeri alacaktır. Task tanımlamalarımızı yaptıktan sonra Task.WaitAll(tasks) metodu ile tüm taskların çalışıp biteceğini garanti ettik.

1
2
3
4
5
6
7
8
var tasks = new[]
    {
        Task.Run(() => { işlem gelecek }),
        Task.Run(() => { işlem gelecek }),
        Task.Run(() => { işlem gelecek })
    };
     
Task.WaitAll(tasks.ToArray());

*Burada ki amaç işlemleri art arda yapmaktansa birbirinden bağımsız task yaratıp birbirine paralel işlem yaratmak. Bu da bize zamandan tasarruf sağlayacaktır. 

Osman KURT
Yazılım Uzmanı

C Sharp ile Datagridview deki Kayıtları Excele Aktarma

Bu yazımda DataGridview de listelediğimiz verileri excel dosyasına aktarmayı göstereceğim. Biliyorsunuz ki projelerimizde kullandığımız verileri bazen farklı alanlarda da kullanmamız icab edebilir. O zaman ne yapacağız database de sakladığımız verileri excel gibi programlara dökeceğiz ki hedefe ulaştırmak daha kolay olsun. Lafı zuatmadan kodlarıma geçmek istiyorum ben. İşe ilk olarak Microsoft.Office.Interop.Excel.rar (166,77 kb) dosyamızı indirdikten sonra projemize referans alarak başlayalım ve alt kısımdaki kodlarımızı cs tarafına yazalım.

private void button1_Click(object sender, EventArgs e)
{
  excele_aktar(dataGridView1);
}
void excele_aktar(DataGridView dg)
{
  dg.AllowUserToAddRows = false;
  System.Globalization.CultureInfo dil = System.Threading.Thread.CurrentThread.CurrentCulture;
  System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-us");
  Microsoft.Office.Interop.Excel.Application Tablo = new Microsoft.Office.Interop.Excel.ApplicationClass();
  Microsoft.Office.Interop.Excel.Workbook kitap = Tablo.Workbooks.Add(true);
  Microsoft.Office.Interop.Excel.Worksheet sayfa = (Microsoft.Office.Interop.Excel.Worksheet)Tablo.ActiveSheet;
  System.Threading.Thread.CurrentThread.CurrentCulture = dil;
  Tablo.Visible = true;
  sayfa = (Worksheet)kitap.ActiveSheet;
  for (int i = 0; i < dg.Rows.Count; i++)
  {
    for (int j = 0; j < dg.ColumnCount; j++)
    {
      if (i == 0)
      {
        Tablo.Cells[1, j + 1] = dg.Columns[j].HeaderText;
      }
      Tablo.Cells[i + 2, j + 1] = dg.Rows[i].Cells[j].Value.ToString();
    }
  }
  Tablo.Visible = true;
  Tablo.UserControl = true;
}

Yazımız bu kadar arkadaşlar.

Görüşmek Üzere

Osman KURT

Yazılım Geliştirici ve Grafiker

C# da Webbrowser Kullanımı Textbox'ı Otomatik Doldurma Ve Butona Otomatik Basma

Arkadaşlar nerede kullanacağınızı bilemem ama yararlı bir kod paylaşacağım size. Nerede kullanacağınızı bilmiyorum çünkü bazı arkadaşlar bu kodu pek de iyi şeyler için kullanmıyorlar. Güvenlik açıkları olan siteler için tam bir baş belası işin aslı.

Bu yazımızda c# form tabanlı çalışacağız.İlk olarak formumuza 1 adet web browser,1 adet textbox ve 1 adet buton ekleyelim. Toolbax'ımızda mevcuttur. Şimdi buraya kadar  tamamladıksa asıl konuya geçelim gözümüze hemen daha önceden localde oluşturduğumuz web projesini çalıştıralım ve adres satırında ki adresi formumuza eklediğimiz webbrowser'ımızın url kısmına ekleyelim. URL kısmıa ekledikten sonra projeyi çalıştırdığımız da webbrowser kısmında localde ki sitenin çalıştığını göreceksiniz. Şimdi hangi tarayıcıyı kullanıyorsunuz bilmiyorum ama kaynak kodundan yada öğeyi denetle alanından sayfada ki textbox ın adını öğrenmemiz gerek ki değeri atayalım. Öğrendikten sonra birde butonumuzun adını aynı kısımdan öğrenmemiz lazım. Bunları da öğrendikten sonra atl kısımda ki kodlarımız işimizi görecektir. Formumuzda bulunan butona çift tıklayarak alt kısmıda ki kodları yazalım.

 

webBrowser1.Document.GetElementById("textboxın adı").InnerText = textBox1.Text;
foreach (HtmlElement el in webBrowser1.Document.All)
{
if (el.Name == "buton ismi")
{
el.InvokeMember("click");
}
}

ya da;

 

webBrowser1.Document.GetElementById("email").InnerText = epostaAdresi;
webBrowser1.Document.GetElementById("pass").InnerText = sifre;
webBrowser1.Document.Forms[0].InvokeMember("submit");


 

Arakadaşlar kodlarımız bu kadar. Bu kodlar webbrowser içinde ki textbox a bizim formumuza eklediğimiz textboxın içindeki değer gelecek ve butona otomatik şekilde basılacak ve işlem kendiliğinden gerçekleşecek. Tahmin edersiniz ki bunu bir döngüye soktuğumuz da nasıl tehlikeli bir yapı olduğunu görüyoruz.

Arkadaşlar bu kodları yararlı olması için paylaştım kötü amaçlar için kullanmayacağınızdan eminim.

Görüşmek üzere

Osman KURT

Yazılım Geliştirici ve Grafiker