<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nurullah DEMİR - The day will come just wait.. &#187; c#</title>
	<atom:link href="http://www.ndemir.com/tag/c/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ndemir.com</link>
	<description>The day will come just wait..</description>
	<lastBuildDate>Sat, 19 May 2012 20:13:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>C# : Kelime Ayırma</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-kelime-ayirma</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-kelime-ayirma#comments</comments>
		<pubDate>Sun, 25 Sep 2011 20:54:02 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# first word]]></category>
		<category><![CDATA[c# get first word]]></category>
		<category><![CDATA[c# how to get first word]]></category>
		<category><![CDATA[c# ilk kelime]]></category>
		<category><![CDATA[c# ilk kelimeyi alma]]></category>
		<category><![CDATA[c# kelime ayıklama]]></category>
		<category><![CDATA[c# kelime ayırıcı]]></category>
		<category><![CDATA[c# kelime ayırma]]></category>
		<category><![CDATA[c# kelime işlemleri]]></category>
		<category><![CDATA[c# kelime seçme]]></category>
		<category><![CDATA[c# selecting word]]></category>
		<category><![CDATA[csharp]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2934</guid>
		<description><![CDATA[Bir projemde bir method yazmam gerekti. Method ile verilen bir cümle/kelime öbeğinden istediğiniz karaktere göre istediğiniz kelimeleri çekmektedir. Methodumuz şu : Örneğin cümlemiz şu olsun : “Lütfullah fotoğraf makinesini bana getir.” cümlesinde ilk iki kelimeyi almak istersek ; Ayracımız ‘ ‘ (boşluk), almak istediğimiz kelime sayısı : 2 olacaktır. Buna göre methodu şöyle çağırmalıyız : [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="csharp" src="http://ndemir.com/img/csharp.png" alt="csharp C# : Kelime Ayırma dot net c sharp " width="155" height="176" />Bir projemde bir method yazmam gerekti. Method ile verilen bir cümle/kelime öbeğinden istediğiniz karaktere göre istediğiniz kelimeleri çekmektedir.</p>
<p>Methodumuz şu :</p>
<pre class="brush: cpp; title: ; notranslate"> string getWord(string input, char bracket, int countOfWord)
        {
            string myWords = null;
            int count = 0;

            for (int i = 0; i &lt; input.Length; i++)
            {
                if (input[i] != bracket)
                {
                    myWords += input[i];
                }
                else
                {
                    count++;
                    if (count == countOfWord)
                    {
                        return myWords;
                    }
                }
            }
            return myWords;
        }</pre>
<p>Örneğin cümlemiz şu olsun : “Lütfullah fotoğraf makinesini bana getir.” cümlesinde ilk iki kelimeyi almak istersek ; Ayracımız ‘ ‘ (boşluk), almak istediğimiz kelime sayısı : 2 olacaktır.</p>
<p>Buna göre methodu şöyle çağırmalıyız :</p>
<pre title="">string cumle = "Lütfullah fotoğraf makinesini bana getir.";
string gelenDeger = getWord(cumle,' ',2);</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-kelime-ayirma/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Asp.NET&#8217;e Giriş</title>
		<link>http://www.ndemir.com/_net/asp-net/asp-nete-giris</link>
		<comments>http://www.ndemir.com/_net/asp-net/asp-nete-giris#comments</comments>
		<pubDate>Sat, 30 Apr 2011 00:58:29 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[Asp.NET]]></category>
		<category><![CDATA[asp.net dersleri]]></category>
		<category><![CDATA[asp.net e giriş]]></category>
		<category><![CDATA[asp.net giriş dersi]]></category>
		<category><![CDATA[asp.net hakkinda]]></category>
		<category><![CDATA[asp.net hello world]]></category>
		<category><![CDATA[asp.net kontrolleri]]></category>
		<category><![CDATA[asp.net nedir]]></category>
		<category><![CDATA[asp.net sayfası hazırlama]]></category>
		<category><![CDATA[asp.net'te kod yazma]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# asp.net]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2702</guid>
		<description><![CDATA[Asp.NET&#8217;e dolaylı bir giriş yapmıştım. Bu yazımda Asp.NET sayfalarının nasıl hazırlandığını ele alacağım. Asp.NET sayfalarımızı Visual Studio yardımı ile kodlayacağız. Visual Studio&#8217;yu eğer öğrenciyseniz www.dreamspark.com programına katılarak ücretsiz indirebilirsiniz (diğer Microsoft ürünlerini de). Asp.NET projesini oluşturduğumuzda iş yapabileceğimiz 3 alan bulunmaktadır. Design : Design penceresi sürükle bırak mantığıyla çalışır. Sadece faremiz iş görür burada. Örneğin [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ndemir.com/wp-content/uploads/asp.net-logo-microsoft.png" ><img class="alignleft size-full wp-image-2705" title="asp.net logo microsoft" src="http://www.ndemir.com/wp-content/uploads/asp.net-logo-microsoft.png" alt="asp.net logo microsoft Asp.NETe Giriş asp net " width="240" height="74" /></a></p>
<p>Asp.NET&#8217;e dolaylı bir giriş yapmıştım. Bu yazımda Asp.NET sayfalarının nasıl hazırlandığını ele alacağım.</p>
<p>Asp.NET sayfalarımızı Visual Studio yardımı ile kodlayacağız. Visual Studio&#8217;yu eğer öğrenciyseniz www.dreamspark.com programına katılarak ücretsiz indirebilirsiniz (diğer Microsoft ürünlerini de).</p>
<p>Asp.NET projesini oluşturduğumuzda iş yapabileceğimiz 3 alan bulunmaktadır.</p>
<ol>
<li>Design : Design penceresi sürükle bırak mantığıyla çalışır. Sadece faremiz iş görür burada. Örneğin bir kontrolü belli bir yere eklemek isterseniz hemen design penceresinden kontrolü tutup fare ile istediğiniz yere sürükleyin.</li>
<li>HTML Source : Bu çalışma alanında HTML/JS/CSS kodları yazabiliriz ya da bir kontrol eklediğimizde bu kısımda eklediğimiz HTML kontrollerini görebiliriz. C#/Visual Basic kodları yazarak spagetti denilen kodlama şeklinde de yazabiliriz. Ancak bu yöntemi kullanmak Asp.NET mantığına ters düşer, çünkü zaten bu karmaşadan kurtulmak için 3 alana bölünmüştür. PHP/ASP gibi dillerde spagetti şeklinde kodlama vardır, karma çorman yani <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile Asp.NETe Giriş asp net " class='wp-smiley' title="icon smile Asp.NETe Giriş asp net " /> </li>
<li>Code : Bu alanda C#/Visual Basic kodlama alanı yapacağımız yer. Bizi en çok ilgilendiren kısım burası olacaktır, çünkü burası projemizin bel kemiği. Hemen her türlü işlemi burada yapacağız.</li>
</ol>
<p><strong>Asp.NET Kontrolleri:</strong></p>
<p>Yeni bir web projesi oluşturduğumuzda sol tarafta kategorilere ayrılmış şekilde kontroller yer alır. Bu kontrollerin hepsi standart olan HTML kontrollerinden  türetilmişlerdir. Windows Form&#8217;da karşılaştığımız kontroller ile  karıştırmayın, Asp.NET tarafında standrt HTML kontrollerinin  değiştirilmiş halleri yer alır. Programıcıyı memnun etmek, işini  kolaylaştırmak ve işlevşellik adına Microsoft tarafından standart  kontroller geliştirilmiştir. Sadece &#8220;HTML&#8221; kategorisindeki kontroller en sade şekildedir.</p>
<p>CTRL + Shift + N kısayolları ile Web projesi oluşturduktan sonra HTML kategorisinden bir tane kontrol sayfamıza ekleyelim Design penceresini kullanıp. Ben Select kontrolünü ekledim. Şimdi HTML Source penceresini açalım.<span id="more-2702"></span></p>
<pre class="brush: cpp; title: ; notranslate">

 &lt;select id=&quot;Select1&quot; name=&quot;D1&quot;&gt;
 &lt;option&gt;&lt;/option&gt;
 &lt;/select&gt;
</pre>
<p>Design penceresinden bir kontrol ekledikten sonra sayfamız, HTML Source form taglari arasına select id ile başlayan kodu ekledi. Bu kodda yapacağımız bir değişiklik Design penceresine yansıyacaktır.</p>
<p>Şimdi bir Asp.NET kontrolü ekleyerek arasındaki farkı anlayalım normal kontrol ile Asp.NET kontrolün.<br />
Select kontrolünün Asp.NET versiyonu DropDownList&#8217;dir. Bu kontrolümüzü Design penceresinden ekleyelim ve Source alanına bakalım.</p>
<pre class="brush: cpp; title: ; notranslate">

    &lt;asp:DropDownList ID=&quot;DropDownList1&quot; runat=&quot;server&quot;&gt;
    &lt;/asp:DropDownList&gt;
</pre>
<p>Görüldüğü gibi  HTML kontrollerine C# kodunu yazacağımız alanda malesef ulaşamamaktayız, ancak Asp.NET kontrollerine ulaşabiliriz.  Bunun ile ilgili şöyle bir örnek yapalım:</p>
<p>Bir buton koyalım ve butona bastıkça select kontrolüne bizim textbox&#8217;a yazdığımız veriyi eklesin. <em>(Hello world ile başlamayacağım çünkü hiç sevmem)</em></p>
<p>Ekleyeceğimiz tüm kontroller Asp.NET kontrolü olmalıdır.</p>
<p>Bir Buton, Textbox ve DropDownList ekleyelim Design penceresini kullanarak.<br />
Windows Form&#8217;da olduğu gibi butona iki defa tıklıyoruz. (Butonun click eventini oluşturuyoruz) Buraya aşağıdaki kodu yazalım:</p>
<pre class="brush: cpp; title: ; notranslate">

 DropDownList1.Items.Add(TextBox1.Text);
            TextBox1.Text = &quot;&quot;;
</pre>
<p>Böylece kodlarımızı yazacağımız alan ile de tanıştık. Görüldüğü gibi Windows Form kod penceresinden hiçbir farkı yok. Zaten aralarındaki fark HTML Source alanı.</p>
<p>Ve F5 yazarak projemizi çalıştıralım. TextBox&#8217;a istediğinizi yazdıktan sonra Buton&#8217;u tetikleyin. DropDownList&#8217;e yazdığınızın eklendiğini göreceksiniz. İlk satırdaki kodda; DropDownList1 kontrolündeki elemanlara textbox&#8217;un değerini ekle diyoruz.<br />
İkinci satır ise sayfa geri geldiğinde TextBox boş gelsin diye yazmış olduğum bir kontrol.</p>
<p>Giriş için bu kadarı yeterli buluyor, selamlarımı sunuyorum.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/asp-net/asp-nete-giris/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# : SQL Server Stored Procedure Kullanımı</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-sql-server-stored-procedure-kullanimi</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-sql-server-stored-procedure-kullanimi#comments</comments>
		<pubDate>Sat, 10 Jul 2010 07:47:59 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# commandtype]]></category>
		<category><![CDATA[c# procedure]]></category>
		<category><![CDATA[c# prosedür]]></category>
		<category><![CDATA[c# sql server procedure kullanımı]]></category>
		<category><![CDATA[c# sql server proedür hakkında]]></category>
		<category><![CDATA[c# sql server prosedür kullanımı]]></category>
		<category><![CDATA[c# sqlparameter]]></category>
		<category><![CDATA[c# stored prosedür]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[sql server procedure]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2397</guid>
		<description><![CDATA[Önceki yazımızda SQL Server da nasıl Stored Procedure yazılır onu anlatmıştım (bu yazıya başlamadan belirttiğim yazıyı okumanızı tavsiye ederim). Bu yazımda C# tarafında oluşturduğuz prosedürü nasıl kullanabiliriz, onu göstereceğim inş Önceki yazımızda hatıralarsanız kendi sınıfımızı yazmıştık verileri saklamak için. Yine aynı yolu izliyeceğiz. Kullanımı o kadar da zor değil. İlk önce aşağıdaki kodu inceleyelim, sonra [...]]]></description>
			<content:encoded><![CDATA[<p>Önceki yazımızda <a href="http://www.ndemir.com/_net/sql-server/sql-server-prosedur-hk" >SQL Server da nasıl Stored Procedure yazılır</a><img class="alignleft" src="http://ndemir.com/img/csharp.png" alt="csharp C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " width="155" height="176" title="csharp C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " /> onu anlatmıştım (bu yazıya başlamadan belirttiğim yazıyı okumanızı tavsiye ederim). Bu yazımda C# tarafında oluşturduğuz prosedürü nasıl kullanabiliriz, onu göstereceğim inş <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " class='wp-smiley' title="icon smile C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " /> </p>
<p>Önceki yazımızda hatıralarsanız kendi sınıfımızı yazmıştık verileri saklamak için. Yine aynı yolu izliyeceğiz.<br />
Kullanımı o kadar da zor değil. İlk önce aşağıdaki kodu inceleyelim, sonra da açıklayalım.</p>
<p>Kategorilerimizi sakladığımız sınıfımız şöyle ;</p>
<pre class="brush: cpp; title: ; notranslate">
using System;

namespace OrnekUygulama
{
    class KategoriInfo
    {
        int katID;
        public int KatID
        {
            get { return katID; }
            set { katID = value; }
        }

        string katAdi;
        public string KatAdi
        {
            get { return katAdi; }
            set { katAdi = value; }
        }

        public KategoriInfo(int katIDs,string katAdi)
        {
            this.KatAdi = katAdi;
            this.KatID = katID;
        }
    }
}
</pre>
<p><span id="more-2397"></span><br />
<em>Sınıfı neden oluşturduğumuzdan bahsetmeyeceğim, yukarıda belittiğim yazıda detaylı olarak bahsedilmiştir.<br />
</em></p>
<p>Şimdi gelelim Stored Precedure kullanımına;</p>
<pre class="brush: cpp; title: ; notranslate">
   SqlConnection con = new SqlConnection(&quot;Connection Stringimiz..&quot;);
            SqlCommand cmd = new SqlCommand(&quot;KategorileriGetir&quot;, con);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter _param = new SqlParameter(&quot;@kategoriDurum&quot;, SqlDbType.Int);
            _param.Value = 1;
            cmd.Parameters.Add(param);
            SqlDataReader _dr = cmd.ExecuteReader();
            List&lt;KategoriInfo&gt; listem = new List&lt;KategoriInfo&gt;();

            while (_dr.Read())
            {
                KategoriInfo info = new KategoriInfo(_dr.GetString(1), _dr.GetInt32(0));
                listem.Add(info);
            }
//Bu satırdan itibaren verilerimiz listem nesnesinde saklıdır. Bundan sonrası size kalmış : )
</pre>
<p>Şimdi ne yaptık onu açıklayalım.<br />
<strong>2. Satırda </strong><br />
SqlCommand da CommanString i yerine prosedürümüzün adını yazdık.</p>
<p><strong>3.Satırda</strong><br />
Daha sonra SqlConnection&#8217;a dedik ki ; sana verdiğimiz string i commandtext olarak algılama bunun tipi bir Stored Procedure ona göre davran. (Stored Procedure kullanmadığımız zamanlarda varsayılan değeri CommandText olarak atanır)</p>
<p><strong>Bu prosedürümüz dışarıdan değer alıyor mu ? Evet alıyor</strong><br />
<strong>4. Satırda</strong><br />
Prosedürümüz parametre alıyorsa bizim bu parametreyi göndermemiz gerekiyor. O yüzden 4. satırda yeni bir parametre tanımladım. Ve dedim ki ; bu parametremin adı &#8220;@kategoriDurum&#8221; değeri ise SqlDbType.Int dir.<br />
<strong>5.Satırda</strong><br />
Buraya kadar parametremizi tanımlamıştık, şimdi ise parametremizin değerini giriyoruz.<br />
<strong>6.Satırda</strong><br />
Son olarak ta SqlCommand a dedimki, sen şu parametreyi al sakla, sana verdiğim prosedürü çalıştırırken bu parametrelere ihtiyacın olacak ve Add metodu ile SqlParameter tipinde olan _param i ekledik.<br />
Eğer parametreleriniz çok ise, tek tek SqlParameter tipinde değerler oluşturmayın. SqlParameter[] olarak tanımlayın ve SqlCommand a AddRange metodu ile oluşturduğunuz diziyi ekleyin.</p>
<p>Gerisi zaten normal sql command çalıştırma ile aynı olduğundan burada nokta koyuyorum <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " class='wp-smiley' title="icon smile C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-sql-server-stored-procedure-kullanimi/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C# : SQL Server</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/csharp-sql-server</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/csharp-sql-server#comments</comments>
		<pubDate>Mon, 28 Jun 2010 09:06:23 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# ile sql server kullanımı]]></category>
		<category><![CDATA[c# örnek uygulama]]></category>
		<category><![CDATA[c# sql server bağlanma]]></category>
		<category><![CDATA[c# sql server bağlantısı]]></category>
		<category><![CDATA[c# sql server connection]]></category>
		<category><![CDATA[c# sqlcommand]]></category>
		<category><![CDATA[c# sqlconnection]]></category>
		<category><![CDATA[c# sqldatareader]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2344</guid>
		<description><![CDATA[Hayırlı günler, SQL Server ile ilgili ilk dökümanım, bu dökümanda SQL Server ile C# bağlantısı nasıl yapılır ona göstereceğim. Ayırca DataSet gibi hantal bir yapıdan nasıl kurtulucaz onu da göstereceğim inş Üzerinde çalışacağımız SQL Server örnek veritabanını buradan (Veritabanı yedeğidir, SQL Server Management Studio 2008 ile aldığım yedektir.) indiriniz. [projeyi yazının altından indirebilirsiniz.] MakaleUygulama adında [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://ndemir.com/img/sql.gif" alt="sql C# : SQL Server  sql server dot net c sharp " width="237" height="60" title="sql C# : SQL Server  sql server dot net c sharp " />Hayırlı günler,<br />
SQL Server ile ilgili ilk dökümanım, bu dökümanda SQL Server ile C# bağlantısı nasıl yapılır ona göstereceğim. Ayırca DataSet gibi hantal bir yapıdan nasıl kurtulucaz onu da göstereceğim inş <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : SQL Server  sql server dot net c sharp " class='wp-smiley' title="icon smile C# : SQL Server  sql server dot net c sharp " /> </p>
<p>Üzerinde çalışacağımız SQL Server örnek veritabanını <a rel="nofollow" href="http://www.ndemir.com/cikis/http://ndemir.com/.net/SQLServerExample.rar" target="_blank" >buradan</a> (Veritabanı yedeğidir, SQL Server Management Studio 2008 ile aldığım yedektir.) indiriniz.<em> [projeyi yazının altından indirebilirsiniz.]</em></p>
<p>MakaleUygulama adında veritabanına sahip olduğunuzu varsayıyorum;</p>
<p>Amacımız veritabanında Kategoriler tablosunda bulunan tüm kategorileri getirmek olsun.</p>
<p>Form&#8217;un Load olayında bağlantımızı gerçekleştiriyoruz;<br />
<span id="more-2344"></span></p>
<pre class="brush: cpp; title: ; notranslate">
        // bu iki fieldi dışarda tanımlamamız gerekiyor, ileride ikisine ulaşmak zorunda kalabiliriz.
        SqlConnection con;
        SqlCommand cmd;
        private void Form1_Load(object sender, EventArgs e)
        {
            //yerel pc de çalıştığımız için Integrated Security i true yapmamız gerekiyor, eğer uzak pc e bağlansaydık bunun yerine K.adı ve şifre girmek zorunda kalacaktık.
            con = new SqlConnection(&quot;Data Source=localhost;Initial Catalog=MakaleUygulama;Integrated Security=true&quot;);
            cmd = new SqlCommand(&quot;Select KatID,KatAdi from Kategoriler&quot;, con);
        }
</pre>
<p>Sql Server connection stringine göz atalım, Data Source localhost dedik çünkü yerel bilgisayarda çalışıyoruz, Initial Catalog yerine veritabanı adını yazıyoruz. Integrated Security de üst tarafta yazdığım gibidir.</p>
<p>DataSet&#8217;ten kurtulmaktan bahsettim, nasıl kurtulacağımızı görelim şimdi ;</p>
<p>Önce şöyle bir class oluşturalım ; </p>
<pre class="brush: cpp; title: ; notranslate">
using System;

namespace OrnekUygulama
{
    class KategoriInfo
    {
        int katID;
        public int KatID
        {
            get { return katID; }
            set { katID = value; }
        }

        string katAdi;
        public string KatAdi
        {
            get { return katAdi; }
            set { katAdi = value; }
        }

        public KategoriInfo(int katIDs,string katAdi)
        {
            this.KatAdi = katAdi;
            this.KatID = katID;
        }
    }
}
</pre>
<p>DataSet kullansaydık tüm bilgilerimizi DataSet yapısında kaydedicektik, ama biz o hantal yapıyı değil, kendi oluşturduğumuz bir class da bize gerekli tüm bilgileri saklayacağız. Ufa çaplı projelerde göze çarpmaz ancak büyük çaplı projelerde DataSet performanslı değildir.</p>
<p>Daha sonra Kategorileri Getir butonunu click olayına şu kodları yazalım ;</p>
<pre class="brush: cpp; title: ; notranslate">
        private void btnGetCat_Click(object sender, EventArgs e)
        {
            con.Open();

            List&lt;KategoriInfo&gt; listem = new List&lt;KategoriInfo&gt;();

            SqlDataReader dr=cmd.ExecuteReader();
            while (dr.Read())
            {
                KategoriInfo info = new KategoriInfo(dr.GetInt32(0), dr.GetString(1));
                listem.Add(info);
            }

            listBoxKategori.DataSource = listem;
            listBoxKategori.DisplayMember = &quot;KatAdi&quot;;
            listBoxKategori.ValueMember = &quot;KatID&quot;;
            con.Close();
        }
</pre>
<p>con.Open(); ile bağlantımızı açtık.<br />
<strong>5.Satır</strong>da ise List de KategoriInfo cinsinden değerlerin saklanabileceğini belirttik. (bunun nedenini hemen altta öğrenecekcesiniz)</p>
<p><strong>7. Satır</strong>da DataReader&#8217;e hangi command nesnesini çalıştıracağını belirttik.</p>
<p>Döngü açtık, neden ?<br />
Çünkü DataReader, DataSet gibi tüm bilgileri saklı tutmaz, satır satır çalıştığı için, tek seferde tek satır getirebilir. Kaç kategorimiz var ? 2 o zaman bu döngü 2 defa dönecek, peki nasıl ?<br />
Veritabanından çekilecek bir kayıt varsa Read metodu true değerini döndürür, eğer yoksa false değerini döndürür, yani her seferinde bir kontrol gerçekleşiyor. </p>
<p><strong>10.satırda ne yaptık ?</strong><br />
Burada dr nesnesiyle mevcut satırda (datareader in satır satır çalıştığını söylemiştik) bulunan değerlerini alıp, oluşturduğumuz sınıfın property lerine atıyoruz, constructor da.</p>
<p>dr.GetValue ile de bütün değerleri alabiliyoruz ancak object türünde değer döndürdüğü için casting işlemine tabi tutulması gerekiyor, bu da performans kaybı olacağından biz gelecek verinin türünü belirtip veriyi çekiyoruz.</p>
<p>dr.GetInt32(0); ile gelecek verinin int32 türünde olduğunu belirtiyor ve aldığı 0 parametresi nedir peki ? O da gelecek tabloda 0.kolondaki veriyi belirtiyor. Biz sorgumuzda select KatID,KatAdi from Kategoriler diye oluşturduk. 0.kolon nedir? KatId.<br />
dr.GetString(1); ile gelecek verinin string türünde olduğunu belirttik ve 1. kolondaki veriyi almasını istedik.</p>
<p><strong>11.satır</strong><br />
Biz oluşturduğumuz List ile sadece KategoriInfo türünde değerleri almasını söyledik. Burada da Add metodu ile info nesnemizi List e ekliyoruz. (<a href="http://www.ndemir.com/_net/dot-net-c-sharp/c-diziler-arraylist-list-arasindaki-farklar" >List Nedir ?</a>)</p>
<p>Döngüden çıktık, verilerimizin hepsi nerede saklandı ? Oluşturduğumuz List olan listem de verilerimizin tümü saklı durumda.<br />
dr nesnemizde ne saklı peki ? Hiçbirşey saklı değil, çünkü dataset gibi çalışmaz sadece, satır satır veri çeker veritabanından.</p>
<p><strong>14.satır</strong><br />
Biz bir datatable i datasource olarak tanımlayabiliyorduk, peki 14.satırda nasıl olurda bir List i datasource olarak tanımlayabiliyoruz ?<br />
Cevabı şurda ; List in üzerine sağ tuşla basıp &#8220;Go to defination&#8221; diyip metadata sına bakalım. IList interface inden türemiş, IList arayüzünden türeyen herşey datasource olarak kullanılabilir.<br />
Yani şöyle diyebiliriz; Biz dataset kullanmayarak, kendi ihtiyaçlarımızı karşılayan bir dataset yazdık. (Tabi ki dataset yazmadık, çünkü bizim oluşturuduğumuz yapı ile dataset karşılaştırılırsa, KategoriInfo sınıfı datatable ile özdeşleştirilebilir, çünkü dataset yapısı datatable ıda içine alan bir yapıdır.)</p>
<p><strong>15 &#038; 16.satırda</strong><br />
DisplayMember olarak &#8220;KatAdi&#8221;, ValueMember olarak &#8220;KatID&#8221; i tanılmadık.<br />
Biz kendi kendi datatable mizi oluşturmuştuk zaten, Burada da oluşturduğumuz List de bulunan; KatAdi property sinin gösterilecek öğe olarak, KatID property sinin ise value(değer) elemanı olarak algılanmasını belirttik.</p>
<p>Programı çalıştırıp Kategoriyi göster butonuna bastığımızda kategorilerimizin geldiğini görüyoruz.</p>
<p>Döküman ağır gelmiş olabilir arkadaşlar, anlamadıysanız 2 defa okumanızı tavsiye ederim. Karmaşık gelebilir ama basit bir yapı. Bol bol pratik yapmanızı öneririm.<br />
<a rel="nofollow" href="http://www.ndemir.com/cikis/http://ndemir.com/.net/SQLServerOrnekUygulama.rar" target="_blank" >C# Sql Server Örnek Proje</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/csharp-sql-server/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>C# : Diziler, ArrayList, List arasındaki farklar</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-diziler-arraylist-list-arasindaki-farklar</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-diziler-arraylist-list-arasindaki-farklar#comments</comments>
		<pubDate>Thu, 24 Jun 2010 07:53:17 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# array arraylist list]]></category>
		<category><![CDATA[c# arraylist]]></category>
		<category><![CDATA[c# collections]]></category>
		<category><![CDATA[c# generic]]></category>
		<category><![CDATA[c# koleksiyonlar]]></category>
		<category><![CDATA[c# list]]></category>
		<category><![CDATA[csharp]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2342</guid>
		<description><![CDATA[Bugün çok kullanacağımız iki yapıyı sizlere kısa ve öz şekilde aktaracağım. ArrayList ve List. Diziler : Temel dizidir. Kötü tarafı, tanımlanırken sınır getirilmesi, 10 elemanlı bir diziye 11 eleman tanımlayamayız.  Kullanımı : Sinif[] nesne = new Sinif[5]; Gördüğünüz gibi maximum 5 eleman alabilir. Şimdi ArrayList ve List&#8217;e bakalım neler yapılabiliyor. ArrayList : Dizinin yaptığı tüm [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://ndemir.com/img/csharp.png" alt="csharp C# : Diziler, ArrayList, List arasındaki farklar dot net c sharp " width="155" height="176" title="csharp C# : Diziler, ArrayList, List arasındaki farklar dot net c sharp " />Bugün çok kullanacağımız iki yapıyı sizlere kısa ve öz şekilde aktaracağım. ArrayList ve List.<br />
<strong>Diziler :</strong> Temel dizidir. Kötü tarafı, tanımlanırken sınır getirilmesi, 10 elemanlı bir diziye 11 eleman tanımlayamayız.  <span style="text-decoration: underline;"><br />
Kullanımı :</span><br />
Sinif[] nesne = new Sinif[5];<br />
Gördüğünüz gibi maximum 5 eleman alabilir. Şimdi ArrayList ve List&#8217;e bakalım neler yapılabiliyor.</p>
<p><strong><br />
ArrayList : </strong>Dizinin yaptığı tüm işleri yapar ama sınır getirilmediğinden istediğimiz kadar eleman ekleyebiliriz. Aldığı her elemanı boxing işlemi ile object olarak sakladığından Hertürlü değeri alabilir. Add,Remove,Sort gibi metodlar kullanışlı metodlardır.</p>
<p><span style="text-decoration: underline;">Kullanımı :</span><br />
ArrayList liste = new ArrayList();</p>
<p>liste.Add(nesnemiz); // yeni eleman ekleniyor.</p>
<p><strong>List :</strong></p>
<p>List dizinin yaptığı tüm işlemleri yapar buna ek olarak en önemli özelliği belirlenen türde veri saklayabilir. Bu sebepten dolayı veri saklanırken herhangi bir boxing işlemine tabi tutulmayacağından performans olarak ArrayList&#8217;den daha iyidir.</p>
<p><span style="text-decoration: underline;">Kullanımı :</span><br />
List&lt;Turumuz&gt; liste = new List&lt;Turumuz&gt;();</p>
<p>Kullanımı ArrayList gibidir, ekleme, silme vs..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-diziler-arraylist-list-arasindaki-farklar/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>C# : Windows API&#8217;ler</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-windows-apiler</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-windows-apiler#comments</comments>
		<pubDate>Sun, 30 May 2010 13:17:51 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# api]]></category>
		<category><![CDATA[c# api kullanımı]]></category>
		<category><![CDATA[c# cd sürücüsü açma]]></category>
		<category><![CDATA[c# cdrom open]]></category>
		<category><![CDATA[c# da api kullanımı]]></category>
		<category><![CDATA[c# da windows api kullanımı]]></category>
		<category><![CDATA[c# windows]]></category>
		<category><![CDATA[c# windows api]]></category>
		<category><![CDATA[c# windows apiler hakkında]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[csharp windows api]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2308</guid>
		<description><![CDATA[Hayırlı işler dilerim herkese. Bugün C#&#8217;da Windows tarafından sunulan API leri nasıl kullanabileceğimizi göstereceğim inş. Öncelikle API nedir ? API&#8217;nin açılımı ; Application Programmin Interface (Uygulama Programlama Arayüzü)dir. API&#8217;ler bize başka sistemlerle etkileşimi sağlar. Ben çok geniş almayacağım ele, C# da neden ihtiyaç duyulur bunu aktaracağım. Biz C# da herşeyi yapamıyoruz. Örneğin CD sürücüsünü kontrol [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="C#,C# windows api, csharp" src="http://ndemir.com/img/csharp.png" alt="csharp C# : Windows APIler dot net c sharp " width="155" height="176" />Hayırlı işler dilerim herkese.<br />
Bugün C#&#8217;da Windows tarafından sunulan API leri nasıl kullanabileceğimizi göstereceğim inş.</p>
<p>Öncelikle API nedir ?</p>
<p>API&#8217;nin açılımı ; Application Programmin Interface (Uygulama Programlama Arayüzü)dir. API&#8217;ler bize başka sistemlerle etkileşimi sağlar. Ben çok geniş almayacağım ele, C# da neden ihtiyaç duyulur bunu aktaracağım. Biz C# da herşeyi yapamıyoruz.</p>
<p>Örneğin CD sürücüsünü kontrol edebileceğimiz bir yapı bulunmamaktadır .NET Framework da (Eğer varsa bile bunu yine temelde API ile sağlamaktadır.)  Yada faremiz yaptığımız bir uygulamanın üstündendeyken koordinatlarını alabiliriz, ne zaman ki formu gizledik o zaman işte biz farenin koordinatlarını alamayız. Ama Windows&#8217;un bize sağladağı API&#8217;ler ile bu bilgiye ulaşabiliriz.</p>
<p>API&#8217;ler her dilde kullanılır ancak her dilde kullanım şekli farklıdır.<br />
API&#8217;ler işletim sistemine göre farklılık gösterir. Bu duruma dikkat etmeniz gerekecektir.<br />
İhtiyaç duyduğunuz API&#8217;leri aratarak bulabilirsiniz, bunun için malesef pek kaynağınız yok(google hariç <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_biggrin.gif' alt="icon biggrin C# : Windows APIler dot net c sharp " class='wp-smiley' title="icon biggrin C# : Windows APIler dot net c sharp " />  )<span id="more-2308"></span></p>
<h4>API&#8217;nin Kullanımı ;</h4>
<pre class="brush: cpp; title: ; notranslate">
        [DllImport(&quot;winmm&quot;)]
        private static extern int mciSendString(string strCommand, StringBuilder strReturn, int iReturnLenght, IntPtr hwndCallback);

        void cdCikar()
        {
            //cd rom sürücüsü çıkıyor
            mciSendString(&quot;Set cdaudio door open&quot;, null, 0, IntPtr.Zero);
        }
</pre>
<p>DllImport sınıfını kullanabilmemiz için, using bloğuna</p>
<pre class="brush: cpp; title: ; notranslate">
using System.Runtime.InteropServices;
</pre>
<p>namespace&#8217;ini tanımlamız gerekiyor.</p>
<p><span style="color: #888888;">Şimdi ne yaptığımızı açıklayayım; </span></p>
<p>DllImport ile kullanmak istediğimiz dll in adını yazıyoruz. <span style="text-decoration: underline;">Hemen altına</span> ise extern ile genişleteceğimiz yeni bir metod tanımlıyoruz, bu tanımlamayı bulduğunuz API&#8217;e uygun halde tanımlamanız gerekiyor, alacağı parametre türleri vs.</p>
<p>Yukarıda kullandığımız API cd sürücümüzü açıyor. cdCikar() dediğimizde cd sürücüsünü çıkaracaktır. Windows API&#8217;lerini kullanabilmek için bunları bilmemiz yeterli.</p>
<p>Dediğim gibi API leri kendiniz bocalamayın framework un orasını burasını kurcalayıp, ihtiyaç duyduğunuz zaman Google&#8217;dan aratın, işletim sistemine dikkat edin yanlız. <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : Windows APIler dot net c sharp " class='wp-smiley' title="icon smile C# : Windows APIler dot net c sharp " /><br />
Bir sonraki yazıda çeşitli birkaç API örneği vereceğim inş.</p>
<p>Hayırlı günler dilerim.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-windows-apiler/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C# : Olay Oluşturma ve Asenkron Metod Örneği</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-olay-olusturma-ve-asenkron-metod-ornegi</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-olay-olusturma-ve-asenkron-metod-ornegi#comments</comments>
		<pubDate>Mon, 01 Mar 2010 20:35:06 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# access veritabanı örneği]]></category>
		<category><![CDATA[c# application]]></category>
		<category><![CDATA[c# asenkron metod örneği]]></category>
		<category><![CDATA[c# delegate örnek]]></category>
		<category><![CDATA[c# event olay örneği]]></category>
		<category><![CDATA[c# oledbconnection örnek]]></category>
		<category><![CDATA[c# özel mesaj uygulaması]]></category>
		<category><![CDATA[c# uygulama]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2147</guid>
		<description><![CDATA[Selamun Aleykum Cümleten, Son birkaç yazım ile ilgili basit bir örnek yapayım dedim döküman yazmak yerine. Programı kaba taslak özetliyeyim; veritabanında kullanıcıya mesajın olup olmadığını kontrol ediyor, event i butona tıkladıktan sonra gerçekleştiriyor. Biz isteseydik formun actived olayında da kurabilirdik. Diğer birşey ise ; DBKontrolLib.cs de bulunan 2 tane delegaete. Bundan biri (TemsilciHandler) olayımızın kullandığı [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://ndemir.com/img/csharp.png" alt="csharp C# : Olay Oluşturma ve Asenkron Metod Örneği dot net c sharp " width="155" height="176" title="csharp C# : Olay Oluşturma ve Asenkron Metod Örneği dot net c sharp " />Selamun Aleykum Cümleten,</p>
<p>Son birkaç yazım ile ilgili basit bir örnek yapayım dedim döküman yazmak yerine.</p>
<p>Programı kaba taslak özetliyeyim; veritabanında kullanıcıya mesajın olup olmadığını kontrol ediyor, event i butona tıkladıktan sonra gerçekleştiriyor. Biz isteseydik formun actived olayında da kurabilirdik.</p>
<p>Diğer birşey ise ; DBKontrolLib.cs de bulunan 2 tane delegaete. Bundan biri (<span style="color: #888888;">TemsilciHandler</span>) olayımızın kullandığı delegate, diğeri ise (<span style="color: #888888;">AsynKontrolCalistirHandler</span>) olayımızı asenkron çalıştıracak bir delegate. Hatırlayacağınız üzere biz asenkron işlemlerini delegate üzerinden yapıyorduk. KontrolEt metodunu ise her dakikada bir defa (15. saniyede) çalışacak şekilde sonsuz bir döngüye soktuk.</p>
<p>MyEventArgs sınıfı nedir diye sorarsanız, .NET kütüphanesinde bulunan olayların çoğuna bakın object ve EventArgs türünde iki nesne vardır, bunun sebebi de kısaca şudur : olayın meydana geldiği andaki bilgilerin aktarılması. Yani oalyın gerçekleştiği an nerede ne, nasıl oldu vs. Biz MyEventArgs sınıfını veritabanında bulunan mesajları string türünde bir diziyle olaya bir metod atandığı zaman erişilebilsin diye yazdık. Form1.cs içerisinde bulabilirsiniz olayın gerçekleştiği anda ki bilgilere <span style="color: #888888;">e.mesaj</span> diyerek ulaştık tabi MyEventArgs sınıfında daha çok şey tanımlayabilirdik ama sade ve anlaşılır olsun diye basit birşeyler yapmak istedim.</p>
<p>Sınıf biraz daha geliştirilerek kullanıcı mesajları okuduktan sonra okundu olarak işlenebilir, tabi bizim amacımız delegate/olay/asenkron olduğu için bu kadarını yeterli gördüm.</p>
<p>Projeyi aşağıdan indirebilirsiniz.</p>
<p>[<a href="http://www.ndemir.com/.net/DBKontrol.rar" >PROJE</a>]</p>
<p><a href="http://www.ndemir.com/wp-content/uploads/c-örnek-uygulama.png" ><img class="size-full wp-image-2151 alignnone" title="c# örnek uygulama" src="http://www.ndemir.com/wp-content/uploads/c-örnek-uygulama.png" alt="c örnek uygulama C# : Olay Oluşturma ve Asenkron Metod Örneği dot net c sharp " width="392" height="136" /></a></p>
<p>İyi çalışmalar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-olay-olusturma-ve-asenkron-metod-ornegi/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# : Asenkron Programlama &#8211; Thread, BeginInvoke vs.</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-asenkron-programlama</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-asenkron-programlama#comments</comments>
		<pubDate>Thu, 25 Feb 2010 07:12:29 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[AsyncCallback]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# application]]></category>
		<category><![CDATA[c# asenkron metodlar]]></category>
		<category><![CDATA[c# asenkron mimarisi]]></category>
		<category><![CDATA[c# example]]></category>
		<category><![CDATA[c# thread kullanımı]]></category>
		<category><![CDATA[c# thread örneği]]></category>
		<category><![CDATA[c# thread sınıfı]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2116</guid>
		<description><![CDATA[Selam herkese , öncelikle herkesin mevlid kandilini kutlarım. Bugün asenkron mimarisini inceleyeceğiz inş. Asenkron mimari nedir ? Süreçlerin bağımsız bir şekilde aynı anda devam etmesi şeklinde yorumlanmaktadır. C# da asenkron mimari yapısını uygulamak için genel anlamda kullanılan iki ana yapı mevcuttur. Thread Sınıfı Asenkron Metodlar (BeginInvoke, Stream.BeginRead vb) Bilgisayarlar aynı anda birden fazla işlem yapamaz, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://ndemir.com/img/csharp.png" alt="csharp C# : Asenkron Programlama   Thread, BeginInvoke vs. dot net c sharp " width="155" height="150" title="csharp C# : Asenkron Programlama   Thread, BeginInvoke vs. dot net c sharp " />Selam herkese , öncelikle herkesin mevlid kandilini kutlarım.<br />
Bugün asenkron mimarisini inceleyeceğiz inş.</p>
<p>Asenkron mimari nedir ?<br />
Süreçlerin bağımsız bir şekilde aynı anda devam etmesi şeklinde yorumlanmaktadır.</p>
<p>C# da asenkron mimari yapısını uygulamak için genel anlamda kullanılan iki ana yapı mevcuttur.</p>
<ol>
<li>Thread Sınıfı</li>
<li>Asenkron Metodlar (BeginInvoke, Stream.BeginRead vb)</li>
</ol>
<p>Bilgisayarlar aynı anda birden fazla işlem yapamaz, nasıl yapamaz ? Şöyle ki ; Biz her ne kadar word de bir yazı yazıyor ve winampta şarkı dinliyorken her iki işlemi biz her ne kadar aynı anda yapıyormuş gibi algılasakta değildir, yaptığımız bu işlemler sırasıyla yapılmaktadır. Toplam işlemler iş parçacıklarına bölünerek sırasıyla yapılır.</p>
<p>Bizde normal şartlar altında bir müdahelede bulunmadığımız sürece programlarımız senkron çalışır, yani kodu okur görevini yerine getirdikten sonra bir alt satırdaki kod ile devam eder. Asenkron programlama ile biz programımız bir şeyi yaparken onunla beraber başka şeyler yapmasını isteriz. Bunuda işlemleri parçacıklara bölerek gerçekleştirir bir ondan bir bundan, bir ondan bir bundan <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : Asenkron Programlama   Thread, BeginInvoke vs. dot net c sharp " class='wp-smiley' title="icon smile C# : Asenkron Programlama   Thread, BeginInvoke vs. dot net c sharp " /><br />
<span id="more-2116"></span></p>
<pre class="brush: cpp; title: ; notranslate">
            while (DateTime.Now.Second != 30)
            {
                this.Text = DateTime.Now.Second.ToString();
            }
            MessageBox.Show(&quot;Test&quot;);
</pre>
<p>Burada saniye 30 olduktan sonra döngüden çıkılacaktır, biz bunu beklemek zorunda değiliz bu yüzden hem metodu hemde uyarıyı aynı anda çalıştırmak isteriz.<br />
Önce asenkron metodlardan başlamak istiyorum.</p>
<h3>Asenkron Metodlar</h3>
<p>Bu yöntemde biz delegate kullanacağız.<br />
Programımızda butona bastıktan sonra Test diye uyarı versin ve formun başlığını her saniye değiştirsin.<br />
Döngü içerisindeyken çalıştırmak istediğimiz metodun içeriği aşağıdaki şekilde olsun;</p>
<pre class="brush: cpp; title: ; notranslate">
            while (DateTime.Now.Second != 30)
            {
                this.Text = DateTime.Now.Second.ToString();
            }
</pre>
<p>Şimdi delegate i tanımlayalım;</p>
<pre class="brush: cpp; title: ; notranslate">
public delegate void IslemHandler();
</pre>
<p>Butonun click olayına aşağıdaki kodları yazalım;</p>
<pre class="brush: cpp; title: ; notranslate">
        private void button1_Click(object sender, EventArgs e)
        {
            IslemHandler islem = new IslemHandler(metodumuz);
            islem.BeginInvoke(new AsyncCallback(islemSonlandi), this);

        }
</pre>
<p>Burada BeginInvoke metodu ile gerçekleştiriyoruz yapmak istediğimizi, bu metodu kullanırken bizden AsyncCallback türünde bir delegate istiyor, biz delegate i metod içerisinde kuruyoruz, kurduğumuz bu metod içerisinde bizden IAsyncResult türünde bir parametra alan ve geri dönüş tipi void olan bir metod istemektedir, istemesinin nedeni de şu ; bu işlem parçacığı bittiği zaman belirttiğimiz bu metod çalışacaktır, bu yüzden bu tanımlamayı yaparken ek olarak bir metod yazmamız gerekecek, mesela işlem bittiğinde &#8220;İşlem bitti&#8221; diye uyarı versin.<br />
2. istediği bir parametre ise object türünde herhangi birşey, null olarak ta gönderebilirdik ama ben formun o anki başlığını ekrana yazdıracağım bu yüzden formun kendisini gönderdim.</p>
<pre class="brush: cpp; title: ; notranslate">
        void islemSonlandi(IAsyncResult ia)
        {
            Form1 frm = (Form1)ia.AsyncState;
            MessageBox.Show(frm.Text + &quot;\nİşlem sonlandı&quot;);
        }
</pre>
<p>Bizden object türünde bir nesne istemişti ve biz this yani formun kendisini göndermiştk, ia.AsyncState ile bize gelen nesneye ulaşıyoruz, yani AsyncState metodu bize BeginInvoke ile gönderdiğimiz nesneyi geri gönderiyor.</p>
<p>Son olarak ta formun load olayına aşağıdaki kodu yazıyoruz ;</p>
<pre class="brush: cpp; title: ; notranslate">
CheckForIllegalCrossThreadCalls = false;
</pre>
<p>Eğer bunu yazmazsak yaptığımız işlemler çalışmayacak ve hata verecektir. program.cs içerisinde Application.Run(new Form1); ile formu çalıştıran bir process var, normalde aynı anda iki process aynı şeyi kullanamaz biz yukarıdaki tanımlamayı yaparak bunu yoksaymasını istiyoruz.<br />
Programı çalıştırıp butona bastığımızda hem uyarı verip hemde formun başlığının değiştirildiğini göreceksiniz. Ve işlem bittiğinde ayrı bir uyarı.<br />
Projeyi en altta verdiğim linkten indirebilirsiniz.</p>
<h3>Thread Sınıfı</h3>
<p>Thread sınıfının kullanılması daha hoş. Thread, iş parçacıklarıdır.</p>
<p>Çalıştırmak istediğimiz metod ;</p>
<pre class="brush: cpp; title: ; notranslate">
        void islemYap()
        {
            while (DateTime.Now.Second != 52)
            {
                this.Text = DateTime.Now.ToString();

            }
        }
</pre>
<p>Buton click olayına da aşağıdaki kodu yazıyoruz; </p>
<pre class="brush: cpp; title: ; notranslate">
            Thread islem = new Thread(new ThreadStart(islemYap));
            islem.Start();
</pre>
<p>Burada Thread sınıfından yararlanıyoruz, Thread sınıfını kurarken constructor olarak ThreadStart sınıfı istiyor ve ThreadStart sınıfı da çalıştırmasını istediğimiz metodu istiyor<br />
Thread çok kapsamlı, çok pratik yapılması gereken bir konu. Özünde AsynCallback temelini kullanan bir yapı.<br />
Thread sınıfı içerisinde güzel metodlar var birkaçı ;<br />
Suspend : işlemi dondurur.<br />
Resume : dondurduğumuz işlemi devam ettirir.<br />
Priority : işlemin önceliğini arttırır azaltabilmemiz için kullanılan ayrı bir metod.</p>
<p>Proje içerisinde ayrı birkaç şey açıkladım.<br />
<a rel="nofollow" href="http://www.ndemir.com/cikis/http://ndemir.com/.net/AsenkronAPP.rar" target="_blank" >[PROJE]</a><br />
Okula gitmek zorundayım sanırım 5-10 dk geç kaldım <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : Asenkron Programlama   Thread, BeginInvoke vs. dot net c sharp " class='wp-smiley' title="icon smile C# : Asenkron Programlama   Thread, BeginInvoke vs. dot net c sharp " /><br />
Hayırlı çalışmalar dilerim.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-asenkron-programlama/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C# : Events (olaylar)</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-events-olaylar</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-events-olaylar#comments</comments>
		<pubDate>Tue, 23 Feb 2010 15:06:36 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# event & delegates kullanımı]]></category>
		<category><![CDATA[c# events]]></category>
		<category><![CDATA[c# events nedir]]></category>
		<category><![CDATA[c# events olaylar kullanımı hakkında]]></category>
		<category><![CDATA[c# olaylar]]></category>
		<category><![CDATA[csharp]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2106</guid>
		<description><![CDATA[Merhaba arkadaşlar, tatil bitti okul başladı bloğu az asıyorum Bu dökümanda C# da temsilcilerin (delegate)  bir özel hali olan event yapısını anlatmaya çalışacağım inş. İlkönce olayın tanımını yapalım, olaylar bizim formda yaptığımız işlemleri kontrol eder. Örneğin butona tıklamamız bir olaydır, mouse ile üstüne gelmemiz gene bir olaydır. Bu olaylar esnasında istediğimiz kodların çalıştırılmasını/metodların çağrılmasını olay [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.ndemir.com/wp-content/uploads/c-sharp-150x150.png" alt="c sharp 150x150 C# : Events (olaylar) dot net c sharp " width="150" height="150" title="c sharp 150x150 C# : Events (olaylar) dot net c sharp " />Merhaba arkadaşlar, tatil bitti okul başladı bloğu az asıyorum <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : Events (olaylar) dot net c sharp " class='wp-smiley' title="icon smile C# : Events (olaylar) dot net c sharp " /><br />
Bu dökümanda C# da temsilcilerin (delegate)  bir özel hali olan <span style="color: #0000ff;">event </span>yapısını anlatmaya çalışacağım inş.</p>
<p>İlkönce <span style="text-decoration: underline;">olayın tanımı</span>nı yapalım, olaylar bizim formda yaptığımız işlemleri kontrol eder. Örneğin butona tıklamamız bir olaydır, mouse ile üstüne gelmemiz gene bir olaydır. Bu olaylar esnasında istediğimiz kodların çalıştırılmasını/metodların çağrılmasını <span style="color: #0000ff;">olay yöneticisi</span> dediğimiz <span style="text-decoration: underline;">temsilciler </span>üstlenir.</p>
<p>Olaylar sınıfların bir üye elemanıdır. Olayın nasıl tanımlandığını aşağıda görebilirsiniz.</p>
<p>[erişim belirleyici] <span style="color: #0000ff;">event </span>[delegate türü] [olay adı];</p>
<p>Tanımlanmasından da anlaşıldığı üzere, event yapısı bağımsız değildir.</p>
<p>Yine aynı yolu izleyelim, önce altta verilen kodu inceleyin (uygulanacak adımları sırasıyla verdim), kendiniz ne olduğunu anlamaya çalışın, ardından verdiğim açıklamalarla tam anlamaya çalışalım.<br />
<span id="more-2106"></span></p>
<pre class="brush: cpp; title: ; notranslate">
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _Event
{
    //Adım 1
    delegate void TemsilciHandler();

    class Sinifim
    {
        //Adım 2
        public event TemsilciHandler Eventim;

        //Adım 3
        public void eventMetodum()
        {
            //Adım 4
            if (Eventim!=null)
            {
                Eventim();
            }

        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Sinifim mye = new Sinifim();

            //Adım 5
            mye.Eventim += new TemsilciHandler(mye_Eventim);
            //Adım 6
            mye.eventMetodum();

            Console.Read();
        }

        //Adım 5
        static void mye_Eventim()
        {
            Console.WriteLine(&quot;olay gerçekleşti.&quot;);
        }
    }
}
</pre>
<ol>
<li>Adımda temsilcimizi tanımladık, geri dönüş tipi void ve parametresi olmayan bir temsilci.</li>
<li>Adımda TemsilciHandler tipinde bir <span style="color: #888888;">olay </span>tanımladık, <span style="color: #888888;">Eventim </span>olayı artık TemsilciHander ile beraber çalışacak.</li>
<li>Adımda olayımızın gerçekleşip gerçekleşmediğini kontrol edecek bir metod hazırladık.</li>
<li>Bu adımda if ile kontrol gerçekleştirmemizin sebebi şudur :<br />
Bu olay gerçekleştiğinde yapılacak iki şey vardır ;<br />
<span style="text-decoration: underline;"> 1.</span> Olay gerçekleştiği zaman herhangi bir iş yapılabilir (size kalmış)<br />
<span style="text-decoration: underline;"> 2.</span> Olay gerçekleştiğinde hiçbirşey yapılmayabilir.<br />
Eğer 1. şey olursa yani bir metod event a atanmış ise if kullanmaya gerek yoktu. Ama bu olay gerçekleştiğinde event a hiçbir metod atanmamışsa çalışma zamanında NullReferenceException hatasını alırız. Bunu her zaman kullanmamız gerekiyor. Eğer herhangi bir metod bağlanmışsa yani null değil ise Eventim olayına bağlanan metodu çağır. (Biz bu çağırma işlemini <a href="http://www.ndemir.com/coding/dot-net-c-sharp/c-delegates-temsilciler" >delegate </a>ile ilgili dökümanda yapmıştık.)</li>
<li> Adımımızda sınıfımızı kurduk ve Eventim olayına mye_Eventim metodunu atadık, dikkat edin burada yaptığımız işlemin delegate de yaptığımız bir işlemle hiçbir farkı yok, ikisinin atama şekli aynı.Biz mye.Eventim+= dedikten sonra iki defa tab tuşuna basarsak derleyici bizim için otomatik olarak metod üretiyor bu yüzden alttaki metodu da aynı adım içine aldım. Olay gerçekleştiğinde mye_Eventim metodununu çağrılmasını event&#8217;a bildirdik. Olay gerçekleştiği zaman bu metod çağırılacaktır. Biz olayda hiçbir kontrol gerçekleştirmediğimiz için metod direk çağrılacaktır.  Normalde olaylar belirli kontroller yapar, ben giriş olduğu için hiçbir kontrol gerçekleştirmedim.</li>
<li>Eğer Adım 3 te neden biz böyle bir metod tanımlama ihtiyacı duyduk ? diye sormuş olabilirsiniz, nedenini bu adımda yaptığımız işlem açıklıyor. Adım 6 da eventMetodum() metodunu çağırarak olayın gerçekleşip gerçekleşmediğini kontrol etmesini söyledik, dediğim gibi biz hiçbir kontrolden geçirmediğimiz için direk çalıştı. Eğer bir kontrol gerçekleştirseydik, olayın gerçekleşmediği zaman return; deyip metoddan çıkmasını sağlardık, olayın gerçekleştiği zaman ise Adım4. teki kodları yazardık.</li>
</ol>
<p>Giriş için bu kadarını yeterli görüyorum. ALLAH&#8217;a emanet olun, hayırlı çalışmalar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-events-olaylar/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# : Delegates (temsilciler)</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-delegates-temsilciler</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-delegates-temsilciler#comments</comments>
		<pubDate>Thu, 18 Feb 2010 22:29:18 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# delegate]]></category>
		<category><![CDATA[c# delegate & temsilci kavramının kullanımı]]></category>
		<category><![CDATA[c# temscilci]]></category>
		<category><![CDATA[çoklu temsilciler multi delegates]]></category>
		<category><![CDATA[delegate]]></category>
		<category><![CDATA[multicasdelegate coklu temsilci]]></category>
		<category><![CDATA[multicast delegate]]></category>
		<category><![CDATA[temsilciler]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2054</guid>
		<description><![CDATA[C# da bilinmesi gereken ayrı bir konu Delegateler yani temsilcilerdir. Delegateler metodları temsil eder. Temsilcilerinin kullanılmasının amacı, belli olmayan metot çağrımlarını çalışma zamanında belirlemektir. Bildirimi aşağıdaki gibidir. Delegate yapısı c++ dilindeki function pointerlara tekabül ediyor. Delegate konusu da interface gibi tek başına bir anlamlı bir konu değil, kafanızda bunu ben nerde niye kullanayım, bu ne işe [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.ndemir.com/wp-content/uploads/c-sharp-150x150.png" alt="c sharp 150x150 C# : Delegates (temsilciler) dot net c sharp " width="150" height="150" title="c sharp 150x150 C# : Delegates (temsilciler) dot net c sharp " />C# da bilinmesi gereken ayrı bir konu <span style="color: #3366ff;">Delegate</span>ler yani temsilcilerdir. Delegateler metodları temsil eder.</p>
<p>Temsilcilerinin kullanılmasının amacı, belli olmayan metot çağrımlarını çalışma zamanında belirlemektir. Bildirimi aşağıdaki gibidir.</p>
<p>Delegate yapısı c++ dilindeki function pointerlara tekabül ediyor. Delegate konusu da interface gibi tek başına bir anlamlı bir konu değil, kafanızda bunu ben nerde niye kullanayım, bu ne işe yarar gibi sorularda kalıcak ama event yapısı ile birleşince olayı daha iyi pekiştirip anlayacaksınız inş. Event yapısınıda bir dahaki dökümanda yazacağım inş.</p>
<p>Delegate&#8217;in en kısa anlatımı şudur herhalde : Delegate&#8217;ler metodların bellekteki adreslerini aklında tutar <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : Delegates (temsilciler) dot net c sharp " class='wp-smiley' title="icon smile C# : Delegates (temsilciler) dot net c sharp " /> </p>
<p>[Erişim belirleyicisi] delegate [geri dönüş tipi] [delegate ismi] (parametreler);</p>
<p>public delegate int Topla(int s1,int s2);</p>
<p>Aşağıdaki kodu inceleyin.</p>
<pre class="brush: cpp; title: ; notranslate">
using System;

namespace _Delegate
{
    class Program
    {
        public delegate int TemsilcimHandler(int sayi1,int sayi2);

        public static int Topla(int t1, int t2)
        {
            return t1 + t2;
        }
        public static int Carp(int c1,int c2)
        {
            return c1 * c2;
        }

        static void Main(string[] args)
        {
            int s1, s2;
            Console.Write(&quot;1. sayi : &quot;);
            s1 = Convert.ToInt32(Console.ReadLine());
             Console.Write(&quot;2. sayi : &quot;);
            s2 = Convert.ToInt32(Console.ReadLine());

            TemsilcimHandler temsilci ;

            temsilci = new TemsilcimHandler(Topla);
            Console.WriteLine(&quot;Topla metodu :&quot; + temsilci(s1, s2));

            temsilci = new TemsilcimHandler(Carp);
            Console.WriteLine(&quot;Çarpım metodu : &quot; + temsilci(s1, s2));

            Console.Read();
        }

    }
</pre>
<p><span id="more-2054"></span></p>
<p>Programımızın amacı kullanıcıdan 2 sayı alıp bu iki sayının toplamını ve çarpımını vermek. Burada iki ayrı metod var Topla ve Carp isminde, geri dönüş tipleri int, aldıkları iki değer var.<br />
Temscililerin yani delegatelerin metodları temsil ettiğini söylemiştik.<br />
Temsilcim adında bir delegate oluşturduk, ardından <strong>Topla </strong>ve <strong>Carp </strong>metodlarını yazdık.</p>
<p>Dikkat ederseniz metod ile delegate yapı olarak aynıdır, aldıkları değerler, geri dönüş tipleri ve imzaları özdeştir. Eğer böyle yapmasaydık hata alırdık.<br />
Buna açıklık getirmek için şöyle bir izahta yapabiliriz. Birşeyi ne temsil edebilir ? <span style="color: #888888;">Tabii ki kendisine benzeyen birşey.</span></p>
<p>Şimdi gelelim programımızda ne yaptığımıza. Kullanıcıdan 2 sayı alıp bunları s1 ve s2 değişkenilerine atadık.<br />
Ardından oluşturduğumuz temsilci isimli delegate&#8217;i kuruyoruz. Kurulumu sınıf kurmaktaktan hiçbir farkı yok. Yapıcı metod isterken dikkat edin;</p>
<p><img class="alignnone size-full wp-image-2055" title="delegate constructor" src="http://www.ndemir.com/wp-content/uploads/delegate-constructor.png" alt="delegate constructor C# : Delegates (temsilciler) dot net c sharp " width="333" height="62" /><br />
Şeklinde istemektedir. Burada<strong> geri dönüş tipi int, aldığı iki parametrenin de int </strong>türünden olduğu gösterilmektedir. Buraya temsil edilecek metodu yazıyoruz. Daha sonra çağırmak istediğimizde de aşağıdaki şekilde kullanıyoruz.<br />
temscilci(s1, s2);<br />
Delegate kavramı zaten kendisine bildirilen metodu temsil ettiğine göre yukarıdaki şekilde temsil edilen metodu çağırıyoruz.</p>
<h3>Çoklu Temsilciler</h3>
<p>Temsilcimiz sadece bir metodu temsil etmeyebilir. Birden fazla metodu temsil etmesini de isteyebiliriz. Biz yukarıda temsilci nesnesini iki defa tanımladık, birini <span style="color: #888888;">Topla </span>metodu için diğerini ise <span style="color: #888888;">Carp </span>metodu için ama şimdi yapacağımız işlem ile her iki metodu aynı temsilci temsil edip, aynı anda çağıracak. Bu işlemi+= operatörü devreye girmektedir. += operatörü zorunluluk değildir, i+=1; gibi düşünün <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : Delegates (temsilciler) dot net c sharp " class='wp-smiley' title="icon smile C# : Delegates (temsilciler) dot net c sharp " />  Konuyu dağıtmadan örneğe geçmek istiyorum.</p>
<pre class="brush: cpp; title: ; notranslate">
using System;

namespace _Delegate
{
    class Program
    {

        public delegate void TemsilcimHandler(int sayi1, int sayi2);

        public static void Topla(int t1, int t2)
        {
            Console.WriteLine(&quot;Toplama işleminin sonucu : {0}&quot;, t1 + t2);
        }
        public static void Carp(int c1, int c2)
        {
            Console.WriteLine(&quot;Çarpma işleminin sonucu : {0}&quot;, c1 * c2);
        }

        static void Main(string[] args)
        {
            temsilci;
            temsilci = new TemsilcimHandler(Topla);
            temsilci += new TemsilcimHandler(Carp);
            temsilci(3, 5);

            Console.Read();
        }

    }
}
</pre>
<p>Gördüğünüz gibi 23. satırda bahsettiğimiz işlemi gerçekleştirdik, += operatörünün yanında -+ operatürünü kullanarak önceden eklediğimiz bir metodu temsilciden çıkarabiliriz.<br />
24. satırda ise her iki metodu aynı anda çağırdık. Ve ekran çıktısını aşağıdaki şekilde aldık.</p>
<blockquote><p>Toplama işleminin sonucu : 8<br />
Çarpma işleminin sonucu : 15</p></blockquote>
<p><em> Ayrıca dizi şeklinde de tanımlayabilirdik ve istediğimiz metoda tek tek de ulaşabilirdik.Burada GetInvocationList ve DynamicInvoke araya girmektedir. Kullanımı oldukça basit aşağıdaki kod bloğunu inceleyiniz, gerekli yerlerde yorum satırları bulunmakta.</em></p>
<pre class="brush: cpp; title: ; notranslate">
using System;

namespace _Delegate
{
    class Program
    {

        public delegate void TemsilcimHandler(int sayi1, int sayi2);

        public static void Topla(int t1, int t2)
        {
            Console.WriteLine(&quot;Toplama işleminin sonucu : {0}&quot;, t1 + t2);
        }
        public static void Carp(int c1, int c2)
        {
            Console.WriteLine(&quot;Çarpma işleminin sonucu : {0}&quot;, c1 * c2);
        }
        static void Main(string[] args)
        {
            TemsilcimHandler temsilci;
            temsilci = new TemsilcimHandler(Topla);
            temsilci += new TemsilcimHandler(Carp);

            //Delegate türünden bir dizi oluşturup, temsilci delegateini GetInvocationList ile buna atıyoruz.
            Delegate[] cokluTemsilci = temsilci.GetInvocationList();

            //Burada değer ataması yaptık, object[] parametre={5,2}; şeklinde bir diziyide bildirebilirdik.
            cokluTemsilci[0].DynamicInvoke(5, 2);
            cokluTemsilci[1].DynamicInvoke(5, 2);
            Console.Read();
        }

    }
}
</pre>
<p><em>Not:</em> Delegate isimlerinin sonuna Handler eklememin sebebi ; .NET kütüphanesinde tüm delegate lerin sonuna Handler takısı eklenmiştir, bir nevi gelenektir <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : Delegates (temsilciler) dot net c sharp " class='wp-smiley' title="icon smile C# : Delegates (temsilciler) dot net c sharp " /><br />
Bir dahaki yazıda görüşmek üzere inş. Hayırlı işler</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-delegates-temsilciler/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

