<?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>Ergün YÜCEL &#187; Yazılım</title>
	<atom:link href="http://ergunyucel.com/category/yazilim/feed/" rel="self" type="application/rss+xml" />
	<link>http://ergunyucel.com</link>
	<description>using System.Web.Blog;</description>
	<lastBuildDate>Sun, 28 Jun 2009 10:28:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Windows Sistem Renklerini Değiştirme</title>
		<link>http://ergunyucel.com/2007/08/20/windows-sistem-renklerini-degistirme/</link>
		<comments>http://ergunyucel.com/2007/08/20/windows-sistem-renklerini-degistirme/#comments</comments>
		<pubDate>Mon, 20 Aug 2007 08:39:14 +0000</pubDate>
		<dc:creator>Ergün YÜCEL</dc:creator>
				<category><![CDATA[Yazılım]]></category>

		<guid isPermaLink="false">http://ergunyucel.com/2007/08/20/rgb-ve-hexadecimal-renk-kodlari/</guid>
		<description><![CDATA[Kodsal yolla windowsun sistem renklerini değiştirebilmek için user32.dll API&#8217;si ve ona ait SetSysColors fonksiyonu kullanılmaktadır. Windowsdaki mevcut tanımlanmış renklerin kodlarını da aynı API&#8217;den GetSysColor ile alabiliriz. Bu fonksiyonları projelerimizde kullanabilmek için aşağıdaki gibi tanımlıyoruz.C# için; [DllImport("user32.dll")] static extern bool SetSysColors(int cElements, int[] lpaElements, int[] lpaRgbValues); [DllImport("user32.dll")] static extern uint GetSysColor(int nIndex);  VB.NET içinse; Declare Function SetSysColors [...]]]></description>
			<content:encoded><![CDATA[<p class="Section1"><span style="font-family: 'Times New Roman'">Kodsal yolla windowsun sistem renklerini değiştirebilmek için user32.dll API&#8217;si ve ona ait <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ms724940.aspx" title="MSDN'de SetSysColors Fonksiyonu"><font color="#800080">SetSysColors</font></a> fonksiyonu kullanılmaktadır. Windowsdaki mevcut tanımlanmış renklerin kodlarını da aynı API&#8217;den <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ms724371.aspx" title="MSDN'de GetSysColor Fonksiyonu"><font color="#800080">GetSysColor</font></a> ile alabiliriz. Bu fonksiyonları projelerimizde kullanabilmek için aşağıdaki gibi tanımlıyoruz.</span><span style="font-family: 'Times New Roman'">C# için;</span></p>
<p class="Section1"><span style="font-family: 'Times New Roman'"></span><span style="font-family: 'Times New Roman'">[<span style="color: #2b91af">DllImport</span>(<span style="color: #a31515">"user32.dll"</span>)]<br />
<span style="color: blue">static</span> <span style="color: blue">extern</span> <span style="color: blue">bool</span><span style="color: black"> </span>SetSysColors(<span style="color: blue">int</span> cElements, <span style="color: blue">int</span>[] lpaElements, <span style="color: blue">int</span>[] lpaRgbValues);</span></p>
<p class="Section1"><span style="font-family: 'Times New Roman'"></span><span style="font-family: 'Times New Roman'"></span><span style="font-family: 'Times New Roman'">[<span style="color: #2b91af">DllImport</span>(<span style="color: #a31515">"user32.dll"</span>)]<br />
<span style="color: blue">static</span> <span style="color: blue">extern</span> <span style="color: blue">uint</span> GetSysColor(<span style="color: blue">int</span> nIndex);</span><span style="font-family: 'Times New Roman'"></span><span style="font-family: 'Times New Roman'"> </span></p>
<p class="Section1"><span style="font-family: 'Times New Roman'">VB.NET içinse;</span></p>
<p class="Section1"><span style="font-family: 'Times New Roman'"></span><span style="color: blue; font-family: 'Times New Roman'">Declare</span><span style="font-family: 'Times New Roman'"> <span style="color: blue">Function</span> SetSysColors <span style="color: blue">Lib</span> <span style="color: #a31515">&#8220;user32&#8243;</span> (<span style="color: blue">ByVal</span> nChanges <span style="color: blue">As</span> <span style="color: blue">Integer</span>, <span style="color: blue">ByRef</span> lpSysColor <span style="color: blue">As</span> <span style="color: blue">Integer</span>, <span style="color: blue">ByRef</span> lpColorValues <span style="color: blue">As</span> <span style="color: blue">Integer</span>) <span style="color: blue">As</span> <span style="color: blue">Long</span> </span></p>
<p class="Section1"><span style="font-family: 'Times New Roman'"></span><span style="font-family: 'Times New Roman'"></span><span style="color: blue" lang="TR">Declare</span><span lang="TR"> <span style="color: blue">Function</span> GetSysColor <span style="color: blue">Lib</span> <span style="color: #a31515">&#8220;user32&#8243;</span> (<span style="color: blue">ByVal</span> nIndex <span style="color: blue">As</span> <span style="color: blue">Long</span>) <span style="color: blue">As</span> <span style="color: blue">Long</span> </span><span style="font-family: 'Times New Roman'"> </span></p>
<p class="Section1"><span style="font-family: 'Times New Roman'"></span><span style="font-family: 'Times New Roman'">Set işlemi yapılırken verilen parametreler sıra ile değiştirilmek istenen renk sayısı, değiştirilecek olan renk dizisi, ve bu renklerin yeni değerleridir.  Renk bilgisini ise sabit tanımlanmış değişkenlerden verebilmekteyiz.  Ve bunlar sıra ile şunlardır:</span></p>
<p class="Section1"><span style="font-family: 'Times New Roman'"></span><span lang="TR">COLOR_SCROLLBAR – 0 : Scrollbar rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR">COLOR_BACKGROUND – 1 : Masaüstü rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_DESKTOP – 1 :<span>  </span></span><span lang="TR">Masaüstü rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_ACTIVECAPTION – 2 : Aktif pencere başlığında sol taraftaki renk (gradient aktif ise)</span><span lang="TR"></span><span lang="TR"> </span></p>
<p class="Section1"><span lang="TR">COLOR_INACTIVECAPTION – 3 : Pasif pencere(ler)in başlığında sol taraftaki renk (gradient aktif ise)</span><span lang="TR"></span><span lang="TR"> </span></p>
<p class="Section1"><span lang="TR">COLOR_MENU – 4 : Menü arkaplan rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_WINDOW – 5 : Pencere arkaplan rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_WINDOWFRAME – 6 : Pencere çerçevesinin rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_MENUTEXT – 7 : Menülerdeki yazı rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_WINDOWTEXT – 8 : Penceredeki yazı rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_CAPTIONTEXT – 9 : Pencere başlık yazısının rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_ACTIVEBORDER – 10 : Aktif pencerenin çerçeve rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_INACTIVEBORDER – 11 : Pasit pencere(ler)in çerçeve rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_APPWORKSPACE – 12 : MDI uygulamaların arkaplan rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_HIGHLIGHT – 13 : Seçili alan<span>  </span>(SelectedItem) arkaplan rengi </span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_HIGHLIGHTTEXT – 14 : Seçili alan yazısının rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_BTNFACE &#8211; 15 : 3D nesnelerin görünen yüzünün ve dialag boxların arkaplan rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_3DFACE –15 :<span>  </span></span><span lang="TR">3D nesnelerin görünen yüzünün ve dialag boxların arkaplan rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_BTNSHADOW – 16 : 3D nesneler için gölge rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_3DSHADOW – 16 : </span><span lang="TR">3D nesneler için gölge rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_GRAYTEXT &#8211; 17 : Gri (disable edilmiş) yazı rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_BTNTEXT &#8211; 18 : Buton üzerindeki yazıların rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_INACTIVECAPTIONTEXT &#8211; 19 : Pasif başlıklardaki yazının rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_BTNHIGHLIGHT – 20 : Butonun 3D isaretlenmesi rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_3DHIGHLIGHT – 20 : 3D nesneler için seçim rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_3DHILIGHT – 20 : 3D nesneler için seçim rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_3DDKSHADOW – 21 : 3D nesneler için koyu gölge rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_3DLIGHT – 22 : 3D nesneler için açık gölge rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_INFOTEXT – 23 : Tooltiplerin yazı rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_INFOBK – 24 : Tooltiplerin arka plan rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_HOTLIGHT – 26 : Tıklanmış hyperlinklerin rengi</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_GRADIENTACTIVECAPTION – 27 : </span><span lang="TR">Aktif pencere başlığında sol taraftaki renk (gradient aktif ise). Gradient özellikleri için </span><span lang="TR">SPI_GETGRADIENTCAPTIONS fonksiyonu kullanılabilir. </span><span lang="TR"></span><span lang="TR"> </span></p>
<p class="Section1"><span lang="TR">COLOR_GRADIENTINACTIVECAPTION – 28 : Pasif pencere(ler)in sağ taraftaki renk (gradient aktif ise)</span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">COLOR_MENUHILIGHT – 29 : Flat menüde seçili alan rengi (Windows 2000’de desteklenmemektedir.)</span><span lang="TR"></span><span lang="TR"> </span></p>
<p class="Section1"><span lang="TR">COLOR_MENUBAR – 30 : Flat menü çubuğunun arka plan rengi (Windows 2000’de destekelenmemektedir.)</span><span lang="TR"></span><span lang="TR"> </span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span lang="TR">Kod içerisinden yukarıdaki sabitlerden yararlanılarak mevcut renk değerleri okunanabilir (get) ve ya değiştirilebilir (set). Örneğin grafik uygulamalarımızda windows renkleriyle ile çizim-yazı vs yapmamız gerekebilir. Bu tip durumlarda GetSysColor ile istediğimiz renk bilgisini elde ebiliriz. Mesela masaüstü rengini şöyle alabiliriz:</span><span lang="TR"></span><span lang="TR"> </span></p>
<p class="Section1"><span lang="TR"></span><span lang="TR"></span><span style="color: blue" lang="TR">uint</span><span style="color: black" lang="TR"> a = GetSysColor(1); </span><span style="color: green" lang="TR">//uint a = GetSysColor(COLOR_DESKTOP);</span></p>
<p style="line-height: 15.6pt" class="MsoNormal"><span lang="TR"></span></p>
<p><span lang="TR">İlave olarak .NET ortamından windows renklerine ulaşmak için </span><span>SystemColors sınıfından da yararlanabiliriz. Ancak bu sınıftan sadece okuma yapabildiğimiz için bu renkleri değiştirmek istersek SetSysColors fonksiyonunu kullanmamız gerekecektir. (Yapılan değişiklik windows genelinde etkili olacaktır.) Örneğin </span><span lang="TR">seçili alan (selecteditem) rengini şöyle değiştirebiliriz: </span><span lang="TR"></span><span style="font-family: 'Times New Roman'" lang="TR"> </span></p>
<p><span style="font-family: 'Times New Roman'" lang="TR"></span><span lang="TR">SetSysColors(1, COLOR_HIGHLIGHT, RGB(0, 100, 0)); <span style="color: green">//SetSysColors(1,13,RGB(0,100,0));</span></span><span lang="TR"></span><span lang="TR"> </span></p>
<p><span lang="TR">RGB kodları içinde RGB-Hexadecimal <a target="_blank" href="http://www.pitt.edu/~nisg/cis/web/cgi/rgb.html" title="RGB ve Hexadecimal Renk Kodları"><font color="#800080">renk tablosuna</font></a> bakılabilir.</span><span lang="TR"></span><span lang="TR"> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://ergunyucel.com/2007/08/20/windows-sistem-renklerini-degistirme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Görev Çubuğundaki Uygulamalar Listesi</title>
		<link>http://ergunyucel.com/2007/07/21/gorev-cubugundaki-uygulamalar-listesi/</link>
		<comments>http://ergunyucel.com/2007/07/21/gorev-cubugundaki-uygulamalar-listesi/#comments</comments>
		<pubDate>Sat, 21 Jul 2007 16:58:19 +0000</pubDate>
		<dc:creator>Ergün YÜCEL</dc:creator>
				<category><![CDATA[Yazılım]]></category>

		<guid isPermaLink="false">http://ergunyucel.com/2007/07/21/gorev-cubugundaki-uygulamalar-listesi/</guid>
		<description><![CDATA[.NET ortamından windows bileşenlerine ulaşmak ve windowsun hali hazırda yaptığı işlemlere ulaşmak, kullandığı fonksiyonları bizim de kullanabilmemiz için windows API lerden yararlanırız. Bu anlamda kullanacağımız API listesine Platform Invoke (P/Invoke) sitesinden ulaşabiliriz. Görev çubuğundaki (taskbar)  uygulamalara ulaşabilmek için de user32.dll API&#8217;sinden yararlanıyoruz.  C# uygulamarında API tanımlarını DllImport attribute&#8217;u ile yapıyoruz: [DllImport("user32.dll")] private static extern int GetWindowText(int hWnd, StringBuilder title, [...]]]></description>
			<content:encoded><![CDATA[<p>.NET ortamından windows bileşenlerine ulaşmak ve windowsun hali hazırda yaptığı işlemlere ulaşmak, kullandığı fonksiyonları bizim de kullanabilmemiz için windows API lerden yararlanırız. Bu anlamda kullanacağımız API listesine Platform Invoke (P/Invoke) <a target="_blank" href="http://www.pinvoke.net/" title="Platform Invoke">sitesinden </a>ulaşabiliriz.</p>
<p>Görev çubuğundaki (taskbar)  uygulamalara ulaşabilmek için de user32.dll API&#8217;sinden yararlanıyoruz.  C# uygulamarında API tanımlarını DllImport attribute&#8217;u ile yapıyoruz:</p>
<p><font size="2">[<font size="2" color="#2b91af">DllImport</font><font size="2">(</font><font size="2" color="#a31515">"user32.dll"</font><font size="2">)]</font><br />
</font><font size="2" color="#0000ff">private</font><font size="2"> </font><font size="2" color="#0000ff">static</font><font size="2"> </font><font size="2" color="#0000ff">extern</font><font size="2"> </font><font size="2" color="#0000ff">int</font><font size="2"> GetWindowText(</font><font size="2" color="#0000ff">int</font><font size="2"> hWnd, </font><font size="2" color="#2b91af">StringBuilder</font><font size="2"> title, </font><font size="2" color="#0000ff">int</font><font size="2"> size);</font></p>
<p><font size="2">Burada user32.dll API&#8217;si içinde yeralan <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ms633520.aspx" title="MSDN'de GetWindowText fonksiyonu">GetWindowText</a> fonksiyonunu projemizde kullanacağımızı bildiriyoruz.  </font></p>
<p><font size="2">Örnek uygulamamızda yer alan <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ms633497.aspx" title="MSDN'de EnumWindows Fonksiyonu">EnumWindows</a> fonksiyonu ile windowsta açık olan pencerelerin listesini elde ediyoruz.  <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ms633498.aspx" title="MSDN'de EnumWindowsProc Fonksiyonu">EnumWindowsProc</a> ile de bu ekranlarda tek tek dolaşarak başlığını GetWindowText fonksiyonu ile alıyoruz. Ve bu değerleri bir listboxa yazdırıyoruz.</font></p>
<p><font size="2"><a href="http://www.ergunyucel.com/download/TaskBarAppList.zip" title="Örnek Uygulama">Örnek Uygulamayı İndir</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://ergunyucel.com/2007/07/21/gorev-cubugundaki-uygulamalar-listesi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SQL Server 2008: Katmai</title>
		<link>http://ergunyucel.com/2007/07/16/sql-server-2008-katmai/</link>
		<comments>http://ergunyucel.com/2007/07/16/sql-server-2008-katmai/#comments</comments>
		<pubDate>Mon, 16 Jul 2007 06:44:13 +0000</pubDate>
		<dc:creator>Ergün YÜCEL</dc:creator>
				<category><![CDATA[Yazılım]]></category>

		<guid isPermaLink="false">http://ergunyucel.com/2007/07/16/sql-server-2008-katmai/</guid>
		<description><![CDATA[Yazılım devi Microsoft, veritabanı yönetim sistemi olan SQL Server&#8217;ın en yeni versiyonu olan SQL Server 2008&#8242;e özel bir isim atadı ve çıkış zamanını açıkladı.  SQL Server 2008&#8242;in çıkış zamanı olarak 2008&#8242;in ikinci çeyreği gösterildi. Resmi olarak kullanılma zamanı ise 27 Şubat 2008. Denver&#8217;da gerçekleştirilen Worldwide Partner Conference&#8217;da, beklenen zamandan ileride bir tarihin açıklanmasının nedeni olarak; [...]]]></description>
			<content:encoded><![CDATA[<p><span lang="TR">Yazılım devi Microsoft, veritabanı yönetim sistemi olan SQL Server&#8217;ın en yeni versiyonu olan SQL Server 2008&#8242;e özel bir isim atadı ve çıkış zamanını açıkladı. <span> </span>SQL Server 2008&#8242;in çıkış zamanı olarak 2008&#8242;in ikinci çeyreği gösterildi. Resmi olarak kullanılma zamanı ise 27 Şubat 2008. Denver&#8217;da gerçekleştirilen Worldwide Partner Conference&#8217;da, beklenen zamandan ileride bir tarihin açıklanmasının nedeni olarak; bazı stratejik değişiklikler öne sürüldü. Bunun yanı sıra, SQL Server 2008, &#8220;Katmai&#8221; özel ismiyle bilinecek.</span><span style="font-family: Georgia" lang="TR"> </span></p>
<p><span style="color: #999999; font-family: Georgia" lang="TR">Kaynak: <a target="_blank" href="http://shiftdelete.net/site/content/view/1772/1/"><span style="color: #999999">http://shiftdelete.net</span></a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://ergunyucel.com/2007/07/16/sql-server-2008-katmai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Singleton Pattern  ve Inheritance ile MDI Formlarda Tek Child Form Açma</title>
		<link>http://ergunyucel.com/2007/07/07/singleton-pattern-ve-inheritance-ile-mdi-formlarda-tek-child-form-acma/</link>
		<comments>http://ergunyucel.com/2007/07/07/singleton-pattern-ve-inheritance-ile-mdi-formlarda-tek-child-form-acma/#comments</comments>
		<pubDate>Sat, 07 Jul 2007 20:48:34 +0000</pubDate>
		<dc:creator>Ergün YÜCEL</dc:creator>
				<category><![CDATA[Yazılım]]></category>

		<guid isPermaLink="false">http://ergunyucel.com/2007/07/07/singleton-pattern-ve-inheritance-ile-mdi-formlarda-tek-child-form-acma/</guid>
		<description><![CDATA[Windows projelerini oluştururken genellikle bir MDI form (parent) ve onun içinde açılan çocuk (child) formlar şeklinde yapmaya çalışırız. Bu makalede bu şekilde bir uygulamada inheritance ve singleton patternin nasıl uygulanacağını göreceğiz. Öncelikle yapmaya çalıştığımız projedeki ana formda (MDI) solda bir ağaç (tree), üstte bir menü ve altta da durum çubuğu (statusbar) olsun. Ağaç yapımızda şöyle [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ergunyucel.com/wp-content/uploads/2007/09/frmbase.jpg" title="frmbase.jpg"></a><span style="font-family: Georgia"><a href="http://ergunyucel.com/wp-content/uploads/2007/09/frmbase.jpg" title="frmbase.jpg"></a>Windows projelerini oluştururken genellikle bir MDI form (parent) ve onun içinde açılan çocuk (child) formlar şeklinde yapmaya çalışırız. Bu makalede bu şekilde bir uygulamada inheritance ve singleton patternin nasıl uygulanacağını göreceğiz.</span><span style="font-family: Georgia"><br />
Öncelikle yapmaya çalıştığımız projedeki ana formda (MDI) solda bir ağaç (tree), üstte bir menü ve altta da durum çubuğu (statusbar) olsun. Ağaç yapımızda şöyle olsun:</span><img src="http://ergunyucel.com/wp-content/uploads/2007/09/anamenu.jpg" alt="anamenu.jpg" /></p>
<p><span style="font-family: Georgia">Buradaki her alt düğüm (node) bir ekranı (formu) temsil etmektedir ve bu küçük uygulamamızda 6 child fom bulunmaktadır. Tabi ki bu tip projelerde child form sayısı çok daha fazla olmaktadır. Ayrıca bu child formlar birbirlerine benzediklerinden (örneğin her child formda üstte menu olması, altta statusbar olması, ekranı kaplamış bir groupbox olması, zemin renginin yeşil olması gibi bir takım ayarlar&#8230;) her formu tek tek projemize ekleyip bu ayarları hepsinde tek tek yapmak hem zaman kaybı olacaktır hem de ileride bakımını ve yönetimini zorlaştıracaktır. Bu sebeple projemizde interitance kullanacağız. Inheritance temel olarak bir sınıfın özelliklerini kalıtsal olarak başka bir sınıfa aktarmaktan ibarettir. (Detaylı bilgi için <a href="http://msdn2.microsoft.com/En-US/library/ms973803.aspx"><span style="color: purple">bakınız</span></a>.) Bunun için bir tane temel form yaratıp, bu forma her ekranda olmasını istediğimiz özellikleri vereceğiz ve diğer tüm formları bu temel formdan inherit edeceğiz. Bunun için projemize yeni bir form ekliyoruz istediğimiz özellikleri veriyoruz.</span><img align="left" src="http://ergunyucel.com/wp-content/uploads/2007/09/frmbase.jpg" alt="frmbase.jpg" title="frmbase.jpg" /></p>
<p><span style="font-family: Georgia"></span></p>
<p><span style="font-family: Georgia"></span></p>
<p><span style="font-family: Georgia"></span></p>
<p><span style="font-family: Georgia"></span></p>
<p><span style="font-family: Georgia"></span></p>
<p><span style="font-family: Georgia"></span></p>
<p><span style="font-family: Georgia"></span></p>
<p><span style="font-family: Georgia"></span></p>
<p><span style="font-family: Georgia"></span></p>
<p><span style="font-family: Georgia"></span></p>
<p><span style="font-family: Georgia"></span></p>
<p><span style="font-family: Georgia"></span></p>
<p><span style="font-family: Georgia">Yeni yaratacağımız formları ise Project &gt; Add New Item &gt; Inherited Form şeklinde oluşturacağız. Standart form eklemeden farklı olarak eklediğimiz formun hangi formdan türediğini soracak ve listeden temel formumuzu seçeceğiz. Peki ya formlarınız daha önceden eklenmişse ve siz sonradan bu şekilde bir yapıya geçiyorsanız ne olacak? O zaman da formunuzu tanımladığınız yerin hemen altında inherit kodunu yazmanız yeterli olacaktır:</span></p>
<table border="1" cellPadding="0" cellSpacing="0" style="background: #e6e6e6; margin-left: 32.4pt; border-collapse: collapse; border: medium none" class="MsoTableGrid">
<tr>
<td width="252" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 189pt; padding-top: 0cm; border: windowtext 1pt solid">
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">Public</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: blue">Class</span> FrmKategoriTanim</span><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">  Inherits</span><span style="font-size: 10pt; font-family: 'Courier New'"> FrmBase</span></p>
</td>
</tr>
</table>
<p>Buraya kadar yaptığımız girişten sonra asıl makale konumuza geçelim. Ana ekranda gördüğümüz gibi her alt nodeda child formumuzu çağırıyoruz</p>
<table border="1" cellPadding="0" cellSpacing="0" style="background: #e6e6e6; margin-left: 32.4pt; border-collapse: collapse; border: medium none" class="MsoTableGrid">
<tr>
<td width="252" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 189pt; padding-top: 0cm; border: windowtext 1pt solid">
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">Dim</span><span style="font-size: 10pt; font-family: 'Courier New'"> frm <span style="color: blue">As</span> <span style="color: blue">New</span> FrmUrunTanim </span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'">frm.MdiParent = <span style="color: blue">Me</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'">frm.Show()</span></p>
</td>
</tr>
</table>
<p><span style="font-family: Georgia">Örneğin ürün tanım ekranı açıkken, tekrar aynı ekranı açmak istediğimizde yeni bir ürün tanım ekranı açılacaktır. Bu şekilde her tıklamada yeni bir ekran açılacaktır, ancak biz istiyoruz ki child form hiç açılmamışsa bir kez açılsın, eğer açıksa bize açık ekranı getirsin. Bunu aslında mdi formun ActiveMdiChild propertysi (çağrıldığı andaki açık olan child formları verir) içinde basit bir for..next döngüsü kurup açmak istediğimiz form zaten açık mı değil mi diye bakarak anlayabiliriz. Ancak biz burada farklı bir yöntem uygulayacağız ve singleton design pattern ile inheritance karışımı bir çözüm üreteceğiz. Singleton’da genel prensip bir instance’nın (burada, &#8220;New FrmUrunTanim&#8221;)  daha önceden oluşturulup oluşturulmaıdığını tespit etmek, instance yoksa yenisini yaratmak varsa, eskisini döndürmek şeklindedir. Temel formumuz olan FrmBase üzerinde yaptığımız işlemlerin diğer tüm formları da etkilediğini söyledik. Bu anlamda örneğin her formun load eventi altında standart bir işlem yapıyorsak bunu sadece FrmBase formunun load eventina yazmamız yeterli olacaktır. Bu sebeple bizde singleton ile ilgili kodlarımızı her forma yazmaktansa FrmBase altına yazacağız:</span><span style="font-family: Georgia"> </span></p>
<table border="0" cellPadding="0" cellSpacing="0" style="background: #e6e6e6; margin: auto auto auto 5.4pt; border-collapse: collapse" class="MsoNormalTable">
<tr>
<td vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; padding-top: 0cm; background-color: transparent; border: windowtext 1pt solid">
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">Private</span><span style="font-size: 10pt; font-family: 'Courier New'"> _FormLoaded <span style="color: blue">As</span> <span style="color: blue">Boolean</span></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue"></span></span><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">Private</span><span style="font-size: 10pt; font-family: 'Courier New'"> _instance <span style="color: blue">As</span> Form</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"></span><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">Public</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: blue">Function</span> GetInstance(<span style="color: blue">ByVal</span> willLoadedForm <span style="color: blue">As</span> Type) <span style="color: blue">As</span> Form</span><span style="font-size: 10pt; font-family: 'Courier New'">    </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue"> If</span> _FormLoaded = <span style="color: blue">False</span> <span style="color: blue">Then</span></span><span style="font-size: 10pt; font-family: 'Courier New'">      </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'">   _instance = <span style="color: blue">CType</span>(Activator.CreateInstance(willLoadedForm), Form)</span><span style="font-size: 10pt; font-family: 'Courier New'">     <span style="color: blue">  </span></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue">   AddHandler</span> <span style="color: blue">Me</span>._instance.Closed, <span style="color: blue">AddressOf</span> <span style="color: blue">Me</span>.WhenFormClosed</span><span style="font-size: 10pt; font-family: 'Courier New'">       </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'">   _FormLoaded = <span style="color: blue">True</span></span><span style="font-size: 10pt; font-family: 'Courier New'">    </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue"> End</span> <span style="color: blue">If</span></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"> _instance.Focus()</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue">Return</span> _instance</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"></span><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">End</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: blue">Function</span></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue"></span></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue"></span></span><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">Private</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: blue">Sub</span> WhenFormClosed(<span style="color: blue">ByVal</span> sender <span style="color: blue">As</span> <span style="color: blue">Object</span>, <span style="color: blue">ByVal</span> e <span style="color: blue">As </span>EventArgs)</span><span style="font-size: 10pt; font-family: 'Courier New'">     </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue"> Dim</span> closingForm <span style="color: blue">As</span> Form = <span style="color: blue">CType</span>(sender, Form)</span><span style="font-size: 10pt; font-family: 'Courier New'"> </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue"> RemoveHandler</span> closingForm.Closed, <span style="color: blue">AddressOf</span> <span style="color: blue">Me</span>.WhenFormClosed</span><span style="font-size: 10pt; font-family: 'Courier New'">     _FormLoaded = <span style="color: blue">False</span></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue"></span></span><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">End</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: blue">Sub</span></span></p>
</td>
</tr>
</table>
<p><font face="Times New Roman">Ana formda ise kodlarımızı şu şekilde düzenliyoruz:</font></p>
<table border="0" width="100%" cellPadding="0" cellSpacing="0" style="background: #e6e6e6; width: 100%; border-collapse: collapse" class="MsoNormalTable">
<tr>
<td width="100%" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 100%; padding-top: 0cm; background-color: transparent; border: windowtext 1pt solid">
<p style="margin: 0cm 0cm 0pt; line-height: 15.6pt; text-align: justify" class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">Private</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: blue">Sub</span> mainTree_DoubleClick(<span style="color: blue">ByVal</span> sender <span style="color: blue">As </span><span style="color: blue">Object</span>,<span style="color: blue">ByVal</span> e <span style="color: blue">As</span> EventArgs)</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">Dim</span> nd <span style="color: blue">As</span> TreeNode = <span style="color: blue">Me</span>.mainTree.SelectedNode</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"></span><span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">If</span> ((<span style="color: blue">Not</span> nd <span style="color: blue">Is</span> <span style="color: blue">Nothing</span>) <span style="color: blue">AndAlso</span> (nd.Nodes.Count = 0)) <span style="color: blue">Then</span></span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue"></span></span><span style="font-size: 10pt; font-family: 'Courier New'">      <span style="color: blue">Dim</span> frm <span style="color: blue">As</span> Form = <span style="color: blue">Nothing</span></span><span style="font-size: 10pt; font-family: 'Courier New'">  </span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">      <span style="color: blue">Select</span> <span style="color: blue">Case</span> nd.Name</span><span style="font-size: 10pt; font-family: 'Courier New'">      </span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">       <span style="color: blue">Case</span> <span style="color: #a31515">&#8220;kisi&#8221;</span></span><span style="font-size: 10pt; font-family: 'Courier New'">     </span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">        frm = FrmKisiTanim.GetInstance(<span style="color: blue">GetType</span>(FrmKisiTanim))</span><span style="font-size: 10pt; font-family: 'Courier New'">    </span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">       <span style="color: blue">Case</span> <span style="color: #a31515">&#8220;kategori&#8221;</span></span><span style="font-size: 10pt; font-family: 'Courier New'">      </span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">        frm = FrmKategoriTanim.GetInstance(<span style="color: blue">GetType</span>(FrmKategoriTanim))</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">     <span style="color: blue">  Case</span> <span style="color: #a31515">&#8220;urun&#8221;</span></span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">         frm = FrmUrunTanim.GetInstance(<span style="color: blue">GetType</span>(FrmUrunTanim))</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">       <span style="color: blue">Case</span> <span style="color: #a31515">&#8220;satis&#8221;</span></span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">         frm = FrmUrunSatis.GetInstance(<span style="color: blue">GetType</span>(FrmUrunSatis))</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">       <span style="color: blue">Case</span> <span style="color: #a31515">&#8220;stok&#8221;</span></span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">         frm = FrmStokDurumu.GetInstance(<span style="color: blue">GetType</span>(FrmStokDurumu))</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">     <span style="color: blue">  Case</span> <span style="color: #a31515">&#8220;satis_raporu&#8221;</span></span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">         frm = FrmSatisRaporu.GetInstance(<span style="color: blue">GetType</span>(FrmSatisRaporu))</span><span style="font-size: 10pt; font-family: 'Courier New'">  </span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">End</span> <span style="color: blue">Select</span></span><span style="font-size: 10pt; font-family: 'Courier New'"> </span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">If</span> (<span style="color: blue">Not</span> frm <span style="color: blue">Is</span> <span style="color: blue">Nothing</span>) <span style="color: blue">Then</span></span><span style="font-size: 10pt; font-family: 'Courier New'">  </span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">      frm.MdiParent = <span style="color: blue">Me</span></span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">      frm.Show()</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">End</span> <span style="color: blue">If</span></span><span style="font-size: 10pt; font-family: 'Courier New'"> </span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue"> End</span> <span style="color: blue">If</span></span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue"></span></span><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">End</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: blue">Sub</span></span></td>
</tr>
</table>
<p><span style="font-family: Georgia">FrmBase altında yazdığımız kodlarda _FormLoaded ile formumuzun yüklenip yüklenmediği bilgisini, _instance ile de yüklenen form bilgisini tutuyoruz. Formlarımızın yeni bir instancenı almak için Activator sınıfından yararlandık. <a href="http://msdn2.microsoft.com/en-us/library/system.activator.createinstance(VS.71).aspx"><span style="color: purple">CreateInstance</span></a> metodu ile Type cinsinden verilen bir nesnenin instance alınabilmektedir. Burada tüm formlarımızın ilave constructorı olmadığını varsaydık. Eğer parametre ile formlarımızı açmamız gerekiyorsa CreateInstace metoduna ikinci parametre olarak bu constructor parametrelerini array olarak geçebiliyoruz. Formumuzun kapatıldığını anlamak için de _instance’ın FormClosed eventini yakalayıp _FormLoaded = false yapmamız gerekmektedir. (Bu kodu doğrudan FrmBase’in FormClosed eventine yazamıyoruz, çünkü aynı formu tekrar açmak istediğimizde dispose edilmiş bir forma ulaşmaya çalıştığımıza dair bir hata alırız.)  Formlarımızı ana formdan çağırırken FrmBase yerine ilgili formdan çağırdık, sanki kodları oraya yazmışız gibi <img src='http://ergunyucel.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span><font face="Times New Roman"> </font></p>
<p><font face="Times New Roman"><a href="http://www.ergunyucel.com/download/Singleton.zip">Örnek Uygulamayı İndir</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://ergunyucel.com/2007/07/07/singleton-pattern-ve-inheritance-ile-mdi-formlarda-tek-child-form-acma/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Connection Pooling İle İlgili Bir Sorun ve Çözümü</title>
		<link>http://ergunyucel.com/2007/06/24/connection-pooling-ile-ilgili-bir-sorun-ve-cozumu/</link>
		<comments>http://ergunyucel.com/2007/06/24/connection-pooling-ile-ilgili-bir-sorun-ve-cozumu/#comments</comments>
		<pubDate>Sun, 24 Jun 2007 14:53:22 +0000</pubDate>
		<dc:creator>Ergün YÜCEL</dc:creator>
				<category><![CDATA[Yazılım]]></category>

		<guid isPermaLink="false">http://ergunyucel.com/2007/06/24/connection-pooling-ile-ilgili-bir-sorun-ve-cozumu/</guid>
		<description><![CDATA[Bütün veritabanı işlemlerinde bir connection tanımlar ve bunun vasıtasıyla veritabanımıza bağlanıp istediğimiz işlemleri yaparız. Farklı her connection tanımladığımızda bu connectionlar connection pool’da saklanır. Eğer tekrar aynı connectiona ihtiyaç duyarsak tekrar tanımlama yaparız, ama artık bu yeni bir connection olmayıp pool’dan bize atanır. Böylelikle aynı veritabanına defalarca bağlanırken (üstelik kullanıcı sayısının arttığını da düşünürsek) daha kısa [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify" class="MsoNormal"><span style="color: #444444">Bütün veritabanı işlemlerinde bir <span class="SpellE">connection</span> tanımlar ve bunun vasıtasıyla veritabanımıza bağlanıp istediğimiz işlemleri yaparız. Farklı her <span class="SpellE">connection</span> tanımladığımızda bu <span class="SpellE">connectionlar</span> <span class="SpellE">connection</span> <span class="SpellE">pool’da</span> saklanır. Eğer tekrar aynı <span class="SpellE">connectiona</span> ihtiyaç duyarsak tekrar tanımlama yaparız, ama artık bu yeni bir <span class="SpellE">connection</span> olmayıp <span class="SpellE">pool’dan</span> bize atanır. Böylelikle aynı veritabanına defalarca bağlanırken (üstelik kullanıcı sayısının arttığını da düşünürsek) daha kısa sürede bağlantı yapmamızı sağlayacaktır. Bu da daha fazla performans demektir.</span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444">Şimdi bu <span class="SpellE">connection</span> <span class="SpellE">pooling</span> ile karşılaşabileceğimiz bir sorunun senaryosunu hazırlayalım. Öncelikle aşağıdaki örnek kodumuzu ele alalım:</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"></span></p>
<p><shapetype coordsize="21600,21600" o:spt="202" path=" m0,0 l0,21600,21600,21600,21600,0 xe" id="_x0000_t202"></shapetype><stroke joinstyle="miter"></stroke></p>
<path gradientshapeok="t" o:connecttype="rect"></path><shape o:allowoverlap="f" fillcolor="silver" coordsize="21600,21600" type="#_x0000_t202" style="margin-top: 0px; z-index: 1; left: 0px; margin-left: 0px; width: 465.15pt; position: absolute; height: 295.95pt; text-align: left" id="_x0000_s1026"></shape><fill opacity=".5"></fill><textbox style="margin-top: 4.718pt; left: auto; margin-left: 8.312pt; width: 450pt; top: auto; height: 288pt"></textbox></p>
<table width="446" cellPadding="0" cellSpacing="0" style="background: #e6e6e6; width: 446px; height: 896px">
<tr>
<td>
<p class="MsoNormal"><span class="SpellE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlConnection</span></span><span style="font-size: 10pt; font-family: 'Courier New'"> <span class="SpellE">con</span> = <span class="SpellE"><span style="color: blue">new</span></span> <span class="SpellE"><span style="color: #2b91af">SqlConnection</span></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="SpellE"><span style="color: #2b91af"></span></span>(</span><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: #a31515">&#8220;<span class="GramE">server</span>=.SQLEXPRESS;</span></span><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: #a31515"><span class="SpellE">database</span>=TEST;<span class="SpellE">UId</span>=User1;<span class="SpellE">Pwd</span>=123;&#8221;</span><span class="GramE">)</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"></span><span style="font-size: 10pt; font-family: 'Courier New'"><span class="SpellE"><span style="color: #2b91af">SqlCommand</span></span> <span class="SpellE">cmd</span> = <span class="SpellE"><span style="color: blue">new</span></span> <span class="SpellE"><span style="color: #2b91af">SqlCommand</span></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="SpellE"><span style="color: #2b91af"></span></span>(<span style="color: #a31515">&#8220;SELECT <span class="SpellE">Count</span>(*) </span></span><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: #a31515">FROM TARIH&#8221;</span>, <span class="SpellE">con</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="SpellE"><span class="GramE">con</span></span><span class="GramE">.<span class="SpellE">Open</span></span>();</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="SpellE"><span style="color: blue">int</span></span> i = <span class="SpellE"><span style="color: #2b91af">Convert</span></span>.ToInt32(<span class="SpellE"><span class="GramE">cmd</span></span><span class="GramE">.<span class="SpellE">ExecuteScalar</span></span>());</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="SpellE"><span class="GramE">con</span></span><span class="GramE">.<span class="SpellE">Close</span></span>();</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: green">//Bir takım işlemler<span class="GramE">&#8230;.</span></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="SpellE"><span style="color: #2b91af">SqlConnection</span></span> con2 = <span class="SpellE"><span style="color: blue">new</span></span> <span class="SpellE"><span style="color: #2b91af">SqlConnection</span></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'">(</span><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: #a31515">&#8220;<span class="GramE">server</span>=.SQLEXPRESS;</span></span><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: #a31515"><span class="SpellE">database</span>=<span class="SpellE">master</span>;<span class="SpellE">UId</span>=<span class="SpellE">sa</span>;</span></span><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: #a31515"><span class="SpellE">Pwd</span>=123;</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: #a31515"><span class="SpellE">Pooling</span>=<span class="SpellE">False</span>&#8220;</span><span class="GramE">)</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="SpellE"><span style="color: #2b91af">SqlCommand</span></span> cmd2 = <span class="SpellE"><span style="color: blue">new</span></span> <span class="SpellE"><span style="color: #2b91af">SqlCommand</span></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="SpellE"><span style="color: #2b91af"></span></span><span class="GramE">(</span><span style="color: #a31515">&#8220;ALTER DATABASE TEST</span></span><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: #a31515"> SET </span></span><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: #a31515">READ_ONLY&#8221;</span>, con2<span class="GramE">)</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="SpellE"><span style="color: blue">try</span></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="GramE">{</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'">  con2.<span class="SpellE">Open</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'">  cmd2.<span class="SpellE">ExecuteNonQuery</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="GramE">}</span></span><span style="font-size: 10pt; font-family: 'Courier New'">     </span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="SpellE"><span style="color: blue">catch</span></span> (<span class="SpellE"><span style="color: #2b91af">SqlException</span></span> <span class="SpellE">ex)</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="GramE">{</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="GramE"></span></span><span style="font-size: 10pt; font-family: 'Courier New'">   <span class="SpellE"><span class="GramE"><span style="color: #2b91af">Console</span></span></span><span class="GramE">.<span class="SpellE">WriteLine</span></span>(<span class="SpellE">ex</span>.<span class="SpellE">Message</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="GramE">}</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="SpellE"><span style="color: blue">finally</span></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="GramE">{</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'">con2.<span class="SpellE">Close</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'"><span class="GramE">}</span></span></p>
</td>
</tr>
</table>
<p><span style="font-size: 10pt; font-family: 'Courier New'"></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444">Burada yapılanı incelersek TEST veritabanına User1 kullanıcısı ile bağlanıp bir sorgu çalıştırılıyor. Burada ne yapıldığı önemli değil, sonuçta veritabanına bağlanıp bir işlem yapıldığını görmek yeterli. Senaryomuz gereği bu veritabanı üzerinde bir işlem yapmamız gereksin. Bu herhangi bir işlem olabilir, basit olması açısında veritabanını READ_ONLY yapmaya çalışacağız. (Önemli olan <span class="SpellE">alter</span> <span class="SpellE">database</span> edebilmek) Buraya kadar bir sorun yokken çalışma zamanında aşağıdaki hata ile karşılaşıyoruz. </span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<table border="0" cellPadding="0" cellSpacing="0" style="background: #e6e6e6; width: 445px; border-collapse: collapse; height: 39px" class="MsoNormalTable">
<tr>
<td width="614" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 460.6pt; padding-top: 0cm; border: windowtext 1pt solid"><span class="SpellE"><span style="color: #444444"></p>
<p class="MsoNormal"><span class="SpellE"><span style="color: #444444">Timeout</span></span><span style="color: #444444"> <span class="SpellE">expired</span>.  <span class="SpellE">The</span> <span class="SpellE">timeout</span> <span class="SpellE">period</span> <span class="SpellE">elapsed</span> <span class="SpellE">prior</span> <span class="SpellE">to</span> <span class="SpellE">completion</span> of <span class="SpellE">the</span> <span class="SpellE">operation</span> <span class="SpellE">or</span> <span class="SpellE">the</span> <span class="GramE">server</span> is not <span class="SpellE">responding</span>. </span><span style="color: #444444">ALTER DATABASE <span class="SpellE">statement</span> <span class="SpellE">failed</span>. </span></p>
<p></span></span></td>
</tr>
</table>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444">Peki, bu da nereden çıktı şimdi? Evet, <span class="SpellE">connection</span> <span class="SpellE">poolingden</span>… Öncelikle ilk <span class="SpellE">connectionı</span> yarattığımızda bu <span class="SpellE">connection</span> <span class="SpellE">poola</span> atıldı. Daha sonra <span class="SpellE">sa</span> ile sisteme bağlanıp TEST veritabanı üzerinde <span class="SpellE">alter</span> <span class="SpellE">database</span> yapmak istediğimizde ise bize yukarıdaki hatayı verdi. <span class="SpellE">SQLexpress</span> <span class="SpellE">management</span> <span class="SpellE">studioyu</span> açıp <span class="SpellE">sp</span>_<span class="SpellE">who</span> ile bağlı kullanıcılara bakalım. </span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"> <img src="http://ergunyucel.com/wp-content/uploads/2007/09/connection1.jpg" alt="connection1.jpg" /></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444">Sonuçlara baktığımızda User1 kullanıcısının bağlı olduğunu ama “uyuduğunu” görüyoruz. Bu da bizim daha sonra <span class="SpellE">sa</span> ile bu veritabanı üzerinde işlem yapmamızı engelliyor. (SQL 2000 kullanıyorsanız kod tarafında “<span class="SpellE">database</span> <span class="SpellE">currently</span> in <span class="SpellE">use</span>” mesajını alırsınız.)</span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444">Gelelim çözümümüze. En basiti, ilk bağlantımızı tanımlarken <span class="SpellE">Pooling</span>=<span class="SpellE">False</span> özelliğini eklemek olabilir. Ancak bu durumda <span class="SpellE">connection</span> <span class="SpellE">poolingin</span> bize sağladığı nimetlerden faydalanamayacağız ki bu istediğimiz bir çözüm değil. Bu durumda 2. bağlantımızı çalıştırmadan hemen önce</span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<table border="0" cellPadding="0" cellSpacing="0" style="background: #e6e6e6; margin-left: 5.4pt; border-collapse: collapse" class="MsoNormalTable">
<tr>
<td width="252" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 189pt; padding-top: 0cm; border: windowtext 1pt solid">
<p style="text-align: justify" class="MsoNormal"><span class="SpellE"><span class="GramE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlConnection</span></span></span><span class="GramE"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">.<span class="SpellE">ClearPool</span></span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">(<span class="SpellE">con</span>);</span></p>
</td>
</tr>
</table>
<p style="text-align: justify" class="MsoNormal"><span class="GramE"><span style="color: #444444">komutunu</span></span><span style="color: #444444"> işletebiliriz. Böylelikle bu <span class="SpellE">connectionı</span> <span class="SpellE">pool’dan</span> temizlemiş oluruz. Buradaki senaryomuzda aynı <span class="SpellE">scope</span> içinde işlem yaptık. <span class="SpellE">Scope</span> dışında isek aynı <span class="SpellE">connectionı</span> <span class="SpellE">pooldan</span> alıp temizleyebilmek için tekrar tanımlamamız gerekiyor. Yani: </span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<table border="0" cellPadding="0" cellSpacing="0" style="background: #e6e6e6; margin-left: 5.4pt; width: 458px; border-collapse: collapse; height: 104px" class="MsoNormalTable">
<tr>
<td width="576" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 432pt; padding-top: 0cm; border: windowtext 1pt solid">
<p class="MsoNormal"><span class="SpellE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlConnection</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'"> <span class="SpellE">con</span> = </span><span class="SpellE"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">new</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'"> </span><span class="SpellE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlConnection</span></span></p>
<p class="MsoNormal"><span class="SpellE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'"></span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">(</span><span style="font-size: 10pt; color: #a31515; font-family: 'Courier New'">&#8220;<span class="GramE">server</span>=.SQLEXPRESS;</span><span style="font-size: 10pt; color: #a31515; font-family: 'Courier New'"><span class="SpellE">database</span>=TEST;<span class="SpellE">UId</span>=User1;<span class="SpellE">Pwd</span>=123;&#8221;</span><span class="GramE"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">)</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">;</span></p>
<p style="text-align: justify" class="MsoNormal"><span class="SpellE"><span class="GramE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlConnection</span></span></span><span class="GramE"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">.<span class="SpellE">ClearPool</span></span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">(<span class="SpellE">con</span>);</span></p>
</td>
</tr>
</table>
<p class="MsoNormal"><span style="color: #444444"></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444">Hemen burada farklı bir sorunun senaryosunu çizmek istiyorum. Peki, <span class="SpellE">pool</span> bu şekilde değil de farklı bir biçim de temizlenirse ne olur? Mesela <span class="SpellE">sql</span> <span class="GramE">serverda</span> sorun oldu ve <span class="SpellE">restart</span> oldu, ya da <span class="SpellE">sql</span> <span class="SpellE">admin</span> gitti bizim bu User1 bağlantımızı bize haber vermeden KILL etti. (Yukarıdaki <span class="SpellE">sp</span>_<span class="SpellE">who</span> tablosuna göre KILL 53 komutu ile bağlı kullanıcı düşürülebilir.) Bu durumda <span class="SpellE">poolda</span> engel olacak kullanıcı olmadığından bizim ALTER DATABASE işlemi başarıyla çalışacaktır. Ancak, oldu ya daha sonra yine bizim bu veritabanı üzerinde işlem yapmamız gerekti:  </span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<table border="0" cellPadding="0" cellSpacing="0" style="background: #e6e6e6; margin-left: 5.4pt; width: 446px; border-collapse: collapse; height: 625px" class="MsoNormalTable">
<tr>
<td width="576" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 432pt; padding-top: 0cm; border: windowtext 1pt solid">
<p class="MsoNormal"><span class="SpellE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlConnection</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'"> con4 = </span><span class="SpellE"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">new</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'"> </span><span class="SpellE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlConnection</span></span></p>
<p class="MsoNormal"><span class="SpellE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'"></span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">(</span><span style="font-size: 10pt; color: #a31515; font-family: 'Courier New'">&#8220;<span class="GramE">server</span>=.SQLEXPRESS;</span><span style="font-size: 10pt; color: #a31515; font-family: 'Courier New'"><span class="SpellE">database</span>=TEST; <span class="SpellE">UId</span>=User1; <span class="SpellE">Pwd</span>=123;&#8221;</span><span class="GramE"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">)</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">;</span></p>
<p class="MsoNormal"><span class="SpellE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlCommand</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'"> cmd4 = </span><span class="SpellE"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">new</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'"> </span><span class="SpellE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlCommand</span></span></p>
<p class="MsoNormal"><span class="SpellE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'"></span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">(</span><span style="font-size: 10pt; color: #a31515; font-family: 'Courier New'">&#8220;SELECT <span class="SpellE">Count</span>(*) FROM TARIH&#8221;</span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">, con4);</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">  </span><span class="SpellE"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">  <span class="GramE">{</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">      con4.<span class="SpellE">Open</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">      </span><span class="SpellE"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">int</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'"> i2 = </span><span class="SpellE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">Convert</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">.ToInt32(cmd4.<span class="SpellE">ExecuteScalar</span>());</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">  <span class="GramE">}</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">  </span><span class="SpellE"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">catch</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'"> (</span><span class="SpellE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlException</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'"> <span class="SpellE">ex</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">      <span class="GramE">{</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">        </span><span class="SpellE"><span class="GramE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">Console</span></span></span><span class="GramE"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">.<span class="SpellE">WriteLine</span></span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">(<span class="SpellE">ex</span>.<span class="SpellE">Message</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">      <span class="GramE">}</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">  </span><span class="SpellE"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">finally</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">  <span class="GramE">{</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">      con4.<span class="SpellE">Close</span>();</span></p>
<p style="text-align: justify" class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">  <span class="GramE">}</span></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
</td>
</tr>
</table>
<p class="MsoNormal"><span style="color: #444444">Bu seferde farklı bir hata ile karşılaşıyoruz:</span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<table border="0" cellPadding="0" cellSpacing="0" style="background: #e6e6e6; width: 457px; border-collapse: collapse; height: 26px" class="MsoNormalTable">
<tr>
<td width="614" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 460.6pt; padding-top: 0cm; border: windowtext 1pt solid">
<p class="MsoNormal"><span style="color: #444444">A transport-<span class="SpellE">level</span> <span class="SpellE">error</span> has <span class="SpellE">occurred</span> <span class="SpellE">when</span> <span class="SpellE">sending</span> <span class="SpellE">the</span> <span class="SpellE">request</span> <span class="SpellE">to</span> <span class="SpellE">the</span> <span class="GramE">server</span>. (<span class="SpellE">provider</span>: <span class="SpellE">Shared</span> <span class="SpellE">Memory</span> <span class="SpellE">Provider</span>, <span class="SpellE">error</span>: 0 &#8211; Borunun diğer ucunda işlem yok.)</span></p>
</td>
</tr>
</table>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444">Anlaşılacağı üzere “borunun diğer ucu” gitmiş.Yani, ADO.NET bunun daha önce <span class="SpellE">poolda</span> olduğunu zannediyor ve <span class="SpellE">connectionı</span> bu şekilde tanımlıyor ve işlem yapmaya çalışıyor; ancak başarılı olamıyor. Peki, bu durumda ne olacak? Bu durumda yapılacak şey yine <span class="SpellE">exceptiona</span> düştüğünde <span class="SpellE">poolu</span> temizlemek:</span></p>
<p style="text-align: justify" class="MsoNormal"><span style="color: #444444"></span></p>
<table border="0" cellPadding="0" cellSpacing="0" style="background: #e6e6e6; width: 437px; border-collapse: collapse; height: 228px" class="MsoNormalTable">
<tr>
<td width="614" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 460.6pt; padding-top: 0cm; border: windowtext 1pt solid">
<p class="MsoNormal"><span class="SpellE"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">catch</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'"> (</span><span class="SpellE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlException</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'"> <span class="SpellE">ex</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">  <span class="GramE">{</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">      </span><span class="SpellE"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">if</span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'"> (<span class="SpellE"><span class="GramE">ex</span></span><span class="GramE">.<span class="SpellE">Number</span></span> == 233)</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">      <span class="GramE">{</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">         </span><span class="SpellE"><span class="GramE"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlConnection</span></span></span><span class="GramE"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">.<span class="SpellE">ClearAllPools</span></span></span><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">();</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">      <span class="GramE">}</span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: #444444; font-family: 'Courier New'">  <span class="GramE">}</span></span></p>
</td>
</tr>
</table>
<p class="MsoNormal"><span style="color: #444444"></span></p>
<p class="MsoNormal"><span style="color: #444444">Bu durumda, eğer, bu sorgu çok kritik bir sorgu ise tekrar çalıştırılması gerekecektir. </span></p>
<p class="MsoNormal">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://ergunyucel.com/2007/06/24/connection-pooling-ile-ilgili-bir-sorun-ve-cozumu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>String İşlemlerinde Performans</title>
		<link>http://ergunyucel.com/2007/06/10/string-islemlerinde-performans/</link>
		<comments>http://ergunyucel.com/2007/06/10/string-islemlerinde-performans/#comments</comments>
		<pubDate>Sun, 10 Jun 2007 16:15:21 +0000</pubDate>
		<dc:creator>Ergün YÜCEL</dc:creator>
				<category><![CDATA[Yazılım]]></category>

		<guid isPermaLink="false">http://ergunyucel.com/2007/06/10/string-islemlerinde-performans/</guid>
		<description><![CDATA[Projelerimizde en çok kullandığımız değişken tipi string olsa gerek. String tipinin reference type ve immutuable olması, projelerde hayli yer alması bizim string değişkenlerle yaptığımız işlemlerde performansa ne kadar dikkat etmemiz gerektiğini gösteriyor.  String immutuable bir değişken tipidir, dedik. Bunun anlamı string bir değişkene verdiğimiz değeri (aslında değerin adresini) asla değiştiremeyiz. Bunu basit bir örnekle açıklamaya [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #444444; font-family: Arial">Projelerimizde en çok kullandığımız değişken tipi string olsa gerek. String tipinin reference type ve immutuable olması, projelerde hayli yer alması bizim string değişkenlerle yaptığımız işlemlerde performansa ne kadar dikkat etmemiz gerektiğini gösteriyor. </span><span style="color: #444444; font-family: Arial"> </span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial">String immutuable bir değişken tipidir, dedik. Bunun anlamı string bir değişkene verdiğimiz değeri (aslında değerin adresini) asla değiştiremeyiz. Bunu basit bir örnekle açıklamaya çalışalım.</span><span style="color: #444444"></span><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><span style="color: #444444; font-family: Arial"><span>            </span></span></span></p>
<table border="0" cellPadding="0" cellSpacing="0" style="background: #d9d9d9; margin: 2.75pt 4.8pt; border-collapse: collapse" class="MsoNormalTable">
<tr>
<td width="187" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 140.4pt; padding-top: 0cm; background-color: transparent; border: #d4d0c8">
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: Arial">string</span><span style="font-size: 10pt; color: #444444; font-family: Arial"> test = </span><span style="font-size: 10pt; color: #a31515; font-family: Arial">&#8220;Veri&#8221;</span><span style="font-size: 10pt; color: #444444; font-family: Arial">;</span></p>
<p><span style="font-size: 10pt; color: #444444; font-family: Arial"></span><span style="font-size: 10pt; color: #444444; font-family: Arial"></span><span style="font-size: 10pt; color: green; font-family: Arial">//Bir takım işler</span></p>
<p><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: #444444; font-family: Arial">test = </span><span style="font-size: 10pt; color: #a31515; font-family: Arial">&#8220;Data&#8221;</span><span style="font-size: 10pt; color: #444444; font-family: Arial">;</span></span></td>
</tr>
</table>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><font face="Times New Roman"><span style="color: #444444"></span></font></span><span style="color: #444444; font-family: Arial"><font face="Times New Roman"><span style="color: #444444"></span></font></span><span style="color: #444444; font-family: Arial"><font face="Times New Roman"><span style="color: #444444"></span><span style="color: #444444; font-family: Arial"></span></font><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial">Burada yaptığımız heap’de bir yer ayırıp içine “veri”yi koymaktan ve bu yerin adresini test değişkenine vermekten başka bir şey değil. Daha sonra yapılan ise heap’de bir yer daha ayırıp içine “data”yı koymak ve test değişkenine “data”nın adresini vermek. Yani heap’de aslında iki tane yerimiz var (biri “veri”yi içeriyor diğeri “data”yi) ama test değişkenimiz sadece “data”nın bulunduğu adresi tutuyor. Bu şekilde düşündüğümüzde string üzerinde yaptığımız her yeni atamada aslında içindeki veriyi değil, adresini değiştirmiş oluyoruz ve hafızada (heap’de) belki de farkında olmadan fazladan yer tutuyoruz; ta ki garbage collector (GC) zamanı gelip de “veri” nin adresini tutan herhangi bir değişken bulamayıp temizlediği zamana kadar… </span><span style="color: #444444; font-family: Arial"> </span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial">Şimdi de bir karşılaştırma örneğine bakalım.</span><span style="color: #444444"></span><span style="color: #444444; font-family: Arial"> </span></span></span></p>
<table border="0" cellPadding="0" cellSpacing="0" style="background: #d9d9d9; margin: 2.75pt 4.8pt; border-collapse: collapse" class="MsoNormalTable">
<tr>
<td width="331" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 248.4pt; padding-top: 0cm; background-color: transparent; border: #d4d0c8">
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: Arial">string</span><span style="font-size: 10pt; color: #444444; font-family: Arial"> test1 = </span><span style="font-size: 10pt; color: #a31515; font-family: Arial">&#8220;veri&#8221;</span><span style="font-size: 10pt; color: #444444; font-family: Arial">;</span></p>
<p><span style="font-size: 10pt; color: blue; font-family: Arial">string</span><span style="font-size: 10pt; color: #444444; font-family: Arial"> test2 = </span><span style="font-size: 10pt; color: #a31515; font-family: Arial">&#8220;data&#8221;</span><span style="font-size: 10pt; color: #444444; font-family: Arial">;</span><span style="font-size: 10pt; color: #444444; font-family: Arial"> </span></p>
<p><span style="font-size: 10pt; color: #444444; font-family: Arial"></span><span style="font-size: 10pt; color: #444444; font-family: Arial"> </span><span style="font-size: 10pt; color: green; font-family: Arial">// Bir takım işlemler</span><span style="font-size: 10pt; color: #444444; font-family: Arial"></span><span style="font-size: 10pt; color: #444444; font-family: Arial"> </span></p>
<p><span style="font-size: 10pt; color: #444444; font-family: Arial"></span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: blue; font-family: Arial">if</span><span style="font-size: 10pt; color: #444444; font-family: Arial"> (test1.ToUpper() == test2.ToUpper())</span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span>  </span></span></span></p>
<p><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: #444444; font-family: Arial"><span></span></span></span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: #444444; font-family: Arial"><span> </span>{</span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span>      </span></span><span style="font-size: 10pt; color: green; font-family: Arial">// Bir takım işlemler</span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span>   </span>}</span></span></td>
</tr>
</table>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><span style="color: #444444; font-family: Arial"> </span><span style="color: #444444; font-family: Arial"><font face="Times New Roman"><span style="color: #444444"> </span></font></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"><font face="Times New Roman"><span style="color: #444444"></span></font></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"><font face="Times New Roman"><span style="color: #444444"></span></font></span></span><span style="color: #444444; font-family: Arial"> </span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial">Proje çıktısının ilgili yerini ILDASM ile inceleyelim:</span><span style="color: #444444; font-family: Arial"> </span></span><span style="color: #444444; font-family: Arial"> </span><span style="color: #444444; font-family: Arial"><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><span style="color: #444444; font-family: Arial"> </span><span style="color: #444444; font-family: Arial"> </span></span></p>
<p><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><img src="http://ergunyucel.com/wp-content/uploads/2007/09/string3.jpg" alt="string3.jpg" /></span></span></p>
<p><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"><shapetype o:preferrelative="t" filled="f" stroked="f" coordsize="21600,21600" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" id="_x0000_t75"></shapetype><stroke joinstyle="miter"></stroke><br />
<formulas></formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></p>
<path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock><shape type="#_x0000_t75" style="width: 462pt; height: 66pt" id="_x0000_i1025"></shape><imagedata src="file:///C:\DOCUME~1\ergun\LOCALS~1\Temp\msohtml1\01\clip_image001.jpg" o:href="http://img.blogcu.com/uploads/ergunyucel_string1.JPG"></imagedata></span><span style="color: #444444; font-family: Arial">Görüyoruz ki hafızada test1.ToUpper()’ın sonucu başka bir yerde, test2.ToUpper()’ın sonucu başka bir yerde tanımlanıp farklı değişkenlere alınıyor. (Heap’de “veri”, “data”, “VERİ”, “DATA”<span>  </span>yerleri mevcut ve stackda “VERİ”’nin ve “DATA”nın adresini tutan iki ayrı değişken tanımlanmış) Daha sonra da boolean bir değişken tanımlanıp string fonksiyonlarından Equality kullanılarak karşılaştırıldığını görüyoruz. Peki if bloğunu şu şekilde değiştirirsek ne olur acaba, bakalım:</span><span style="color: #444444"></span><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><span style="color: #444444; font-family: Arial"> </span></span></span></p>
<table border="0" cellPadding="0" cellSpacing="0" style="background: #d9d9d9; margin: 2.75pt 4.8pt; border-collapse: collapse" class="MsoNormalTable">
<tr>
<td width="355" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 266.4pt; padding-top: 0cm; background-color: transparent; border: #d4d0c8">
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: Arial">if</span><span style="font-size: 10pt; color: #444444; font-family: Arial"> (</span><span style="font-size: 10pt; color: blue; font-family: Arial">string</span><span style="font-size: 10pt; color: #444444; font-family: Arial">.Compare(test1,test2,</span><span style="font-size: 10pt; color: blue; font-family: Arial">true</span><span style="font-size: 10pt; color: #444444; font-family: Arial">) == 0)</span></p>
<p><span style="font-size: 10pt; color: #444444; font-family: Arial"><span>   </span>{</span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span>      </span></span><span style="font-size: 10pt; color: green; font-family: Arial">// Bir takım işlemler</span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span>   </span>}</span></td>
</tr>
</table>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><font face="Times New Roman"><span style="color: #444444"> </span></font></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial">ILDASM ile proje çıktısının ilgili satırına bakarsak:</span><span style="color: #444444"></span><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><span style="color: #444444; font-family: Arial"> </span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"> </span></span></span></p>
<p><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"><img src="http://ergunyucel.com/wp-content/uploads/2007/09/string2.jpg" alt="string2.jpg" /></span></span></span></p>
<p><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial">Fazladan hafızada yer ayırmalar ve değişken tanımlamalar olmamış. Bu da kodumuzun öncekine göre daha performanslı olmasına ve daha az hafıza kullanılmasına sebep olmuştur.</span><span style="color: #444444; font-family: Arial"> </span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial">String işlemlerinde sıkça kullandığımız bir başka işlem de birleştirmelerdir. Basit bir örnekle bunu da analiz etmeye çalışalım.</span><span style="color: #444444"></span><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><span style="color: #444444; font-family: Arial"> </span></span></span></span></p>
<table border="0" cellPadding="0" cellSpacing="0" style="background: #d9d9d9; margin: 2.75pt 4.8pt; border-collapse: collapse" class="MsoNormalTable">
<tr>
<td width="199" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 149.4pt; padding-top: 0cm; background-color: transparent; border: #d4d0c8">
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: Arial">string</span><span style="font-size: 10pt; color: #444444; font-family: Arial"> test = </span><span style="font-size: 10pt; color: #a31515; font-family: Arial">&#8220;veri1&#8243;</span><span style="font-size: 10pt; color: #444444; font-family: Arial">;</span></p>
<p><span style="font-size: 10pt; color: #444444; font-family: Arial"></span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: green; font-family: Arial">//Bir takım işlemler</span><span style="font-size: 10pt; color: green; font-family: Arial"> </span></span></p>
<p><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: green; font-family: Arial"></span></span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: #444444; font-family: Arial">test += </span><span style="font-size: 10pt; color: #a31515; font-family: Arial">&#8221; veri2&#8243;</span><span style="font-size: 10pt; color: #444444; font-family: Arial">;</span><span style="font-size: 10pt; color: #444444; font-family: Arial"> </span></span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: #444444; font-family: Arial"></span><span style="font-size: 10pt; color: #444444; font-family: Arial"> </span></span></p>
<p><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: #444444; font-family: Arial"></span><span style="font-size: 10pt; color: green; font-family: Arial">//Bir takım işlemler</span><span style="font-size: 10pt; color: green; font-family: Arial"> </span></span></p>
<p><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: green; font-family: Arial"></span></span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: green; font-family: Arial"></span><span style="font-size: 10pt; color: green; font-family: Arial"><span style="font-size: 10pt; color: #444444; font-family: Arial">test += </span><span style="font-size: 10pt; color: #a31515; font-family: Arial">&#8221; veri3&#8243;</span><span style="font-size: 10pt; color: #444444; font-family: Arial">;</span></span></span></td>
</tr>
</table>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><span style="color: #444444; font-family: Arial"><shape type="#_x0000_t75" style="width: 425.25pt; height: 111pt" id="_x0000_i1027"></shape><imagedata src="file:///C:\DOCUME~1\ergun\LOCALS~1\Temp\msohtml1\01\clip_image003.jpg" o:href="http://img.blogcu.com/uploads/ergunyucel_string3.JPG"></imagedata></span><span style="color: #444444; font-family: Arial"> </span></span><span style="color: #444444; font-family: Arial"> </span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span></p>
<p></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"><img src="http://ergunyucel.com/wp-content/uploads/2007/09/string3.jpg" alt="string3.jpg" /></span></span></p>
<p><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial">ILDASM çıktısına ve önceki bilgilerimize göre ilk string birleştirmede aslında heapde bir yer ayrılıp içine “veri1 veri2” yazıldığını ve bunun adresini bizim değişkenimizin tuttuğunu görürüz. Benzer şekilde ikinci birleştirme de heap’de “veri1 veri2 veri3” yazan bir yer ayrıldığını ve bunun adresini değişkenimizin tuttuğunu rahatlıkla söyleyebiliriz. (Heap görüntüsü şöyledir: “veri”, veri1 veri2, “veri1 veri2 veri3” Yani hafızada 3 ayrı yer ayrılmıştır.)<span>  </span>Yani string değişkenimizin içeriğini aslında değiştiremiyoruz, çünkü kendisi immutuable’dır…</span><span style="color: #444444; font-family: Arial"> </span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial">Bu duruma alternatif çözüm StringBuilder sınıfı ile gelmektedir: </span><span style="color: #444444"></span><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><span style="color: #444444; font-family: Arial"> </span></span></span></p>
<table border="0" cellPadding="0" cellSpacing="0" style="background: #d9d9d9; margin: 2.75pt 4.8pt; border-collapse: collapse" class="MsoNormalTable">
<tr>
<td width="367" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 275.4pt; padding-top: 0cm; background-color: transparent; border: #d4d0c8">
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-size: 10pt; color: #2b91af; font-family: Arial">StringBuilder</span><span style="font-size: 10pt; color: #444444; font-family: Arial"> sb = </span><span style="font-size: 10pt; color: blue; font-family: Arial">new</span><span style="font-size: 10pt; color: #444444; font-family: Arial"> </span><span style="font-size: 10pt; color: #2b91af; font-family: Arial">StringBuilder</span><span style="font-size: 10pt; color: #444444; font-family: Arial">();</span></p>
<p><span style="font-size: 10pt; color: #444444; font-family: Arial"></span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: #444444; font-family: Arial">sb.Append(</span><span style="font-size: 10pt; color: #a31515; font-family: Arial">&#8220;veri1&#8243;</span><span style="font-size: 10pt; color: #444444; font-family: Arial">);</span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span>           </span></span></span></p>
<p><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: #444444; font-family: Arial"><span></span></span></span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: #444444; font-family: Arial"><span> </span></span><span style="font-size: 10pt; color: green; font-family: Arial">//Bir takım işlemler</span><span style="font-size: 10pt; color: green; font-family: Arial"> </span></span></p>
<p><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: green; font-family: Arial"></span></span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: #444444; font-family: Arial">sb.Append(</span><span style="font-size: 10pt; color: #a31515; font-family: Arial">&#8220;veri2&#8243;</span><span style="font-size: 10pt; color: #444444; font-family: Arial">);</span><span style="font-size: 10pt; color: #444444; font-family: Arial"> </span><span style="font-size: 10pt; color: #444444; font-family: Arial"> </span></span></p>
<p><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: #444444; font-family: Arial"></span></span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: #444444; font-family: Arial"></span><span style="font-size: 10pt; color: green; font-family: Arial">//Bir takım işlemler</span><span style="font-size: 10pt; color: green; font-family: Arial"> </span></span><span style="font-size: 10pt; color: #444444; font-family: Arial"> </span><span style="font-size: 10pt; color: #444444; font-family: Arial"><span style="font-size: 10pt; color: green; font-family: Arial"></span><span style="font-size: 10pt; color: green; font-family: Arial"><span style="font-size: 10pt; color: #444444; font-family: Arial">sb.Append(</span><span style="font-size: 10pt; color: #a31515; font-family: Arial">&#8220;veri3&#8243;</span><span style="font-size: 10pt; color: #444444; font-family: Arial">);</span></span></span></td>
</tr>
</table>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span></span></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><font face="Times New Roman"><span style="color: #444444"> </span><span style="color: #444444; font-family: Arial"></span></font><font face="Times New Roman"><span style="color: #444444"> </span></font></span><span style="color: #444444; font-family: Arial"><font face="Times New Roman"><span style="color: #444444"></span><span style="color: #444444; font-family: Arial"></span></font><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></span><span style="color: #444444; font-family: Arial"><span style="color: #444444; font-family: Arial"></span></p>
<p></span><span style="color: #444444; font-family: Arial">Aslında her zaman StringBuilder sınıfını kullanmak istenen performansı vermeyecektir. Bu sebeple </span><span style="color: black; font-family: Arial">String birleştirme işlemi belirli bir sayıda ise + veya concat metodunu kullanmak daha faydalı iken, belirsiz ve fazla sayıda string birleştirmeler de StringBuilder sınıfını kullanmak daha iyi olacaktır. Bu tavsiyeyi </span><span style="color: #444444; font-family: Arial">MSDN’de de görüyoruz: </span></p>
<p><span style="color: #444444; font-family: Arial"></span><em><span style="color: black; font-family: Arial">“The <span>String</span> class is preferable for a concatenation operation if a fixed number of <span>String</span> objects are concatenated. In that case, the individual concatenation operations might even be combined into a single operation by the compiler. A <span>StringBuilder</span> object is preferable for a concatenation operation if an arbitrary number of strings are concatenated; for example, if a loop concatenates a random number of strings of user input.”</span></em><span style="color: black; font-family: Arial"> </span></p>
<p><span style="color: black; font-family: Arial"><span style="color: black; font-family: Arial">Projelerimizin minimum kaynak tüketimi ile maksimum performansta çalışmalarını isteriz. Burada da buna nasıl katkı sağlayacağımızı birkaç string işlemi üzerinde incelemeye çalıştık. Belki onlarca satırdan kazanacağımız birkaç ms ve hafızadan tasarruf edebileceğimiz birkaç byte çok fazla bir fark ettirmeyecektir. Ancak unutulmamalıdır ki projelerdeki satır sayısı arttıkça ve yaptığımız işlemler daha da karmaşıklaştıkça bu tip küçük şeylerin aslında ne denli önemli olduğu ortaya çıkacaktır. Ayrıca .NET Framework mimarisinin nasıl çalıştığını anlamamıza bir o kadar da yardımcı olacaktır. </span><font face="Times New Roman"> </font></span></p>
]]></content:encoded>
			<wfw:commentRss>http://ergunyucel.com/2007/06/10/string-islemlerinde-performans/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SqlConnectionStringBuilder İle Connection String Oluşturma &#8211; Düzenleme</title>
		<link>http://ergunyucel.com/2007/06/06/sqlconnectionstringbuilder-ile-connection-string-olusturma-duzenleme/</link>
		<comments>http://ergunyucel.com/2007/06/06/sqlconnectionstringbuilder-ile-connection-string-olusturma-duzenleme/#comments</comments>
		<pubDate>Wed, 06 Jun 2007 16:57:54 +0000</pubDate>
		<dc:creator>Ergün YÜCEL</dc:creator>
				<category><![CDATA[Yazılım]]></category>

		<guid isPermaLink="false">http://ergunyucel.com/2007/06/06/sqlconnectionstringbuilder-ile-connection-string-olusturma-duzenleme/</guid>
		<description><![CDATA[Çoğu zaman veritabani bağlantılarında connection string özelliğini dinamik olarak oluşturmamız gerekmektedir. Bunun için de string birleştirmeler kullanırız. Benzer şekilde de bir connection stringden bazen server, userId gibi bilgileri parçalayarak elde ederiz. Ancak hepimizin bildiği gibi connection stringler yazılırken farklı formatlarda yazılabilirler ve bu da örneğin bağlanılan database bilgisi yerine baska bir bilgi almamıza neden olurlar. [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #444444; font-family: Arial">Çoğu zaman veritabani bağlantılarında connection string özelliğini dinamik olarak oluşturmamız gerekmektedir. Bunun için de string birleştirmeler kullanırız. Benzer şekilde de bir connection stringden bazen server, userId gibi bilgileri parçalayarak elde ederiz. Ancak hepimizin bildiği gibi connection stringler yazılırken farklı formatlarda yazılabilirler ve bu da örneğin bağlanılan database bilgisi yerine baska bir bilgi almamıza neden olurlar. İşte tüm bunların önüne geçmek için .NET 2.0 ile gelen bir sınıf var: <strong><em>SqlConnectionStringBuilder</em></strong></span><em><span style="color: #444444; font-family: Arial"> </span></em></p>
<p><span style="color: #444444; font-family: Arial">SqlConnectionStringBuilder ile çok kolay bir şekilde connection stringler oluşturabiliyoruz; mevcut connection stringler üzerinden de işlemler yapabiliyoruz. SqlConnectionStringBuilder’ın iki tane constructorı vardır ve birisi connection string parameteresi alır. </span><span style="color: #444444; font-family: Arial"> <em> </em></span></p>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial">Başlıca kullanacağımız özellikleri şunlardır:</span><span style="color: #444444; font-family: Arial"> </span></p>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: blue; font-family: Arial">ConnectionString</span><span style="color: #444444; font-family: Arial"> = ConnectionString bilgisini tutar. </span></p>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: blue; font-family: Arial">DataSource</span><span style="color: #444444; font-family: Arial"> = Bağlanılacam olan ana bilgisayar (server) bilgisini tutar.</span></p>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: blue; font-family: Arial">InitialCatalog</span><span style="color: #444444; font-family: Arial"> = Ana bilgisayardaki bağlanılacak veritabanı bilgisini tutar.</span></p>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: blue; font-family: Arial">IntegratedSecurity</span><span style="color: #444444; font-family: Arial"> = Windows güvenliğini kullanarak mı yoksa Sql doğrulama ile mi bağlanacağını belirtir. Default değeri False’dur. </span></p>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: blue; font-family: Arial">UserID</span><span style="color: #444444; font-family: Arial"> = SQL doğrulama ile bağlanılacak kullanıcı adını tutar.</span></p>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: blue; font-family: Arial">Password</span><span style="color: #444444; font-family: Arial"> = SQL doğrulama ile bağlanılacak kullanıcının şifresini tutar.</span><span style="color: #444444; font-family: Arial"> </span></p>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial">Sınıfın tüm metodları ve özellikleri için <a href="http://msdn2.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.aspx"><span style="color: purple">bakınız</span></a>.</span><span style="color: #444444; font-family: Arial"> </span></p>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"> </span><span style="color: #444444; font-family: Arial">Basit olarak aşağıdaki gibi Connection Stringi oluşturabiliyoruz. </span><span style="color: #444444; font-family: Arial"> </span><span style="color: #444444; font-family: Arial"><shapetype coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe" id="_x0000_t202"></shapetype><stroke joinstyle="miter"></stroke></span><span style="color: #444444; font-family: Arial"></p>
<path gradientshapeok="t" o:connecttype="rect"></path><shape fillcolor="silver" type="#_x0000_t202" style="width: 447.15pt; height: 91.95pt" id="_x0000_s1026"></shape><fill opacity=".5"></fill><textbox></textbox></span></p>
<p><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"></span><span style="color: #444444; font-family: Arial"></p>
<table width="100%" cellPadding="0" cellSpacing="0">
<tr>
<td style="background-color: transparent; border: #d4d0c8">
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlConnectionStringBuilder</span><span style="font-size: 10pt; font-family: 'Courier New'"> sqlString = </span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'">      <span style="color: blue">new</span> <span style="color: #2b91af">SqlConnectionStringBuilder</span>();</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">sqlString.DataSource = <span style="color: #a31515">&#8220;(local)&#8221;</span>;</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"></span><span style="font-size: 10pt; font-family: 'Courier New'">sqlString.InitialCatalog = <span style="color: #a31515">&#8220;Northwind&#8221;</span>;</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"></span><span style="font-size: 10pt; font-family: 'Courier New'">sqlString.UserID = <span style="color: #a31515">&#8220;sa&#8221;</span>;</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"></span><span style="font-size: 10pt; font-family: 'Courier New'">sqlString.Password = <span style="color: #a31515">&#8220;123&#8243;</span>;</span><span style="font-size: 10pt; font-family: 'Courier New'"> </span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"></span><span style="font-size: 10pt; font-family: 'Courier New'"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlConnection</span><span style="font-size: 10pt; font-family: 'Courier New'"> con = </span></span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"><span style="font-size: 10pt; font-family: 'Courier New'">      <span style="color: blue">new</span> <span style="color: #2b91af">SqlConnection</span>(sqlString.ConnectionString);<span style="color: #2b91af"></span></span></span></td>
</tr>
</table>
<p><span style="color: #444444; font-family: Arial">Benzer şekilde elimizdeki bir connection string üzerinde de işlem yapmamız gerekebilir. Aşağıdaki örnekte sql doğrulama ile bağlantı sağlayabilecek bir connection stringin windows doğrulama sağlayacak hale nasıl getirildiğini görüyoruz.<strong><em> </em></strong></span><span style="color: #444444; font-family: Arial"> <span style="color: #444444; font-family: Arial"></span><shape fillcolor="silver" type="#_x0000_t202" style="width: 501.15pt; height: 103.95pt" id="_x0000_s1027"></shape><fill opacity=".5"></fill><textbox></textbox></span></p>
<p></span></p>
<table width="100%" cellPadding="0" cellSpacing="0">
<tr>
<td style="background-color: transparent; border: #d4d0c8">
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'">string</span><span style="font-size: 10pt; font-family: 'Courier New'"> conString = <span style="color: #a31515">&#8220;Sever=(local);User ID=sa;Password=123;Database=Northwind&#8221;</span>;</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"></span><span style="font-size: 10pt; font-family: 'Courier New'"></span><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlConnectionStringBuilder</span><span style="font-size: 10pt; font-family: 'Courier New'"> sqlString = </span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue">new</span> <span style="color: #2b91af">SqlConnectionStringBuilder</span>(conString);</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"></span><span style="font-size: 10pt; font-family: 'Courier New'">sqlString.Remove(<span style="color: #a31515">&#8220;User ID&#8221;</span>);</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"></span><span style="font-size: 10pt; font-family: 'Courier New'">sqlString.Remove(<span style="color: #a31515">&#8220;Password&#8221;</span>);</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"></span><span style="font-size: 10pt; font-family: 'Courier New'">sqlString.IntegratedSecurity = <span style="color: blue">true</span>;</span><span style="font-size: 10pt; font-family: 'Courier New'"> </span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"></span><span style="font-size: 10pt; font-family: 'Courier New'"><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'">SqlConnection</span><span style="font-size: 10pt; font-family: 'Courier New'"> con = </span></span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'"><span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">new</span> <span style="color: #2b91af">SqlConnection</span>(sqlString.ConnectionString);<span style="color: #2b91af"></span></span></span></td>
</tr>
</table>
<p><wrap type="none"></wrap><anchorlock></anchorlock></p>
]]></content:encoded>
			<wfw:commentRss>http://ergunyucel.com/2007/06/06/sqlconnectionstringbuilder-ile-connection-string-olusturma-duzenleme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C#&#8217;da My Namespace&#8217;ni kullanmak</title>
		<link>http://ergunyucel.com/2007/06/06/cda-my-namespaceni-kullanmak/</link>
		<comments>http://ergunyucel.com/2007/06/06/cda-my-namespaceni-kullanmak/#comments</comments>
		<pubDate>Wed, 06 Jun 2007 12:34:51 +0000</pubDate>
		<dc:creator>Ergün YÜCEL</dc:creator>
				<category><![CDATA[Yazılım]]></category>

		<guid isPermaLink="false">http://ergunyucel.com/2007/06/06/cda-my-namespaceni-kullanmak/</guid>
		<description><![CDATA[VB.NET 2.0 ile gelen My Namespace bize birçok işi kolay yoldan yapmamızı sağlıyor. Aşağıdaki şekilde My Namespace içindeki sınıfları görüyoruz. Her bir sınıfla bilgisayarımız, uygulamamız hakkında çeşitli bilgiler alıyor ve bir takım işleri çok kolay bir şekilde yapıyoruz. Detaylı bilgi için bakınız. Ancak Visual Basic&#8217;e ait bu namespace C# ortamında doğrudan yer almamaktadır. Tabi bu [...]]]></description>
			<content:encoded><![CDATA[<p>VB.NET 2.0 ile gelen My Namespace bize birçok işi kolay yoldan yapmamızı sağlıyor. Aşağıdaki şekilde My Namespace içindeki sınıfları görüyoruz. Her bir sınıfla bilgisayarımız, uygulamamız hakkında çeşitli bilgiler alıyor ve bir takım işleri çok kolay bir şekilde yapıyoruz. Detaylı bilgi için <a href="http://msdn2.microsoft.com/en-us/library/5btzf5yk(vs.80).aspx"><span><span style="color: purple">bakınız</span></span></a>.</p>
<p><img vspace="10" src="http://ergunyucel.com/wp-content/uploads/2007/07/ergunyucel_myclass.jpg" hspace="10" height="246" style="width: 439px; height: 246px" /><br />
Ancak Visual Basic&#8217;e ait bu namespace C# ortamında doğrudan yer almamaktadır. Tabi bu da C#&#8217;da kullanamayacağımız anlamına gelmiyor. Bunun için öncelikle yeni bir C# projesi açıyoruz ve Microsoft.VisualBasic.dll dosyasını referans olarak ekliyoruz: </p>
<p><img vspace="10" width="467" src="http://ergunyucel.com/wp-content/uploads/2007/07/ergunyucel_addreference.jpg" hspace="10" height="375" style="width: 467px; height: 375px" /></p>
<p>Hangi sınıfları projemizde kullanacağımız bulmak için object browserda VisualBasic.DLL assembly’sini inceliyoruz.</p>
<p><img vspace="10" width="554" src="http://ergunyucel.com/wp-content/uploads/2007/07/ergunyucel_visualbasicdll.jpg" hspace="10" height="616" style="width: 554px; height: 616px" /></p>
<p>Böylelikle projemize ekleyebileceğimiz sınıfları buluyoruz: (İhtiyacınız olmayanı eklemeyebilirsiniz.)</p>
<table border="0" bgColor="#cccccc" cellPadding="0" cellSpacing="0" style="background: #cccccc; border-collapse: collapse">
<tr>
<td width="403" vAlign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; background: none transparent scroll repeat 0% 0%; padding-bottom: 0cm; width: 302.4pt; padding-top: 0cm; border: windowtext 0.5pt solid"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'" lang="TR"><span><span>using M</span></span><span style="font-size: 10pt; font-family: 'Courier New'" lang="TR"><span>icrosoft.VisualBasic.ApplicationServices; </span></span><span style="font-family: 'Arial Unicode MS'" lang="TR"></span></span><span style="font-size: 10pt; color: blue; font-family: 'Courier New'" lang="TR"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'" lang="TR"><span>using</span></span><span style="font-size: 10pt; font-family: 'Courier New'" lang="TR"><span> Microsoft.VisualBasic.Devices;</span></span><span style="font-family: 'Arial Unicode MS'" lang="TR"></span></span></td>
</tr>
</table>
<p>
Sonrada istediğimiz sınıftan bir instance türeterek istediğimiz işlemleri yapabiliyoruz: </p>
<p><img vspace="10" src="http://ergunyucel.com/wp-content/uploads/2007/07/ergunyucel_computer.jpg" hspace="10" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ergunyucel.com/2007/06/06/cda-my-namespaceni-kullanmak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

