<?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>Yılmaz Yavuz &#187; thread</title>
	<atom:link href="http://www.yilmazyavuz.com/yyblog/index.php/tag/thread/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yilmazyavuz.com/yyblog</link>
	<description>yazılım üzerine taze taze</description>
	<lastBuildDate>Mon, 14 Feb 2011 15:35:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Backgroundworker progress changed örneği</title>
		<link>http://www.yilmazyavuz.com/yyblog/index.php/2010/06/backgroundworker-progress-changed-ornegi/</link>
		<comments>http://www.yilmazyavuz.com/yyblog/index.php/2010/06/backgroundworker-progress-changed-ornegi/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 13:45:27 +0000</pubDate>
		<dc:creator>Yılmaz Yavuz</dc:creator>
				<category><![CDATA[C Sharp]]></category>
		<category><![CDATA[background worker]]></category>
		<category><![CDATA[backgroundworker]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[cross-thread]]></category>
		<category><![CDATA[Csharp]]></category>
		<category><![CDATA[do work]]></category>
		<category><![CDATA[multi-thread]]></category>
		<category><![CDATA[progress]]></category>
		<category><![CDATA[progress changed]]></category>
		<category><![CDATA[progressbar]]></category>
		<category><![CDATA[thread]]></category>
		<category><![CDATA[windows application]]></category>

		<guid isPermaLink="false">http://www.yilmazyavuz.com/yyblog/?p=474</guid>
		<description><![CDATA[<p>Backgroundworker windows application yazarken yönetilmesi kolay bir multi-thread componentidir. Farklı bir thread de yapmak istediğiniz işlemleri kolay bir şekilde yapabilir, durum değişikliklerini UI thread e gönderebilirsiniz.</p>
<p>Örnekte 100 birimlik bir iş yapan bir kodumuz var ve progress bar ile bu işlerin ne kadarının bittiğini kullanıcıya göstermek istiyoruz.</p>
<p></p>
<p>Form üzerinde bir adet ProgressBar ve bir adet BackgroundWorker sürükleyip bırakıyoruz. <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.yilmazyavuz.com/yyblog/index.php/2010/06/backgroundworker-progress-changed-ornegi/">Backgroundworker progress changed örneği</a></span>]]></description>
			<content:encoded><![CDATA[<p>Backgroundworker windows application yazarken yönetilmesi kolay bir multi-thread componentidir. Farklı bir thread de yapmak istediğiniz işlemleri kolay bir şekilde yapabilir, durum değişikliklerini UI thread e gönderebilirsiniz.</p>
<p>Örnekte 100 birimlik bir iş yapan bir kodumuz var ve progress bar ile bu işlerin ne kadarının bittiğini kullanıcıya göstermek istiyoruz.</p>
<p><a href="http://www.yilmazyavuz.com/yyblog/wp-content/uploads/02.06.png"><img class="alignnone size-full wp-image-475" title="02.06" src="http://www.yilmazyavuz.com/yyblog/wp-content/uploads/02.06.png" alt="02.06" width="345" height="400" /></a></p>
<p>Form üzerinde bir adet ProgressBar ve bir adet BackgroundWorker sürükleyip bırakıyoruz. Yukarıdaki gibi görünecektir.</p>
<p>Daha sonra formun üstüne çift tıklayıp yada Events penceresinden Form_Load ın üzerine çift tıklayıp aşağıdaki kodları yazıyoruz.</p>
<pre class="brush: csharp;">

//Main Thread
private void Form1_Load(object sender, EventArgs e)
{
//Backgroundworker in başlaması için
backgroundWorker1.RunWorkerAsync();
}
</pre>
<p>Daha sonra Backround worker in Do work eventini yakalıyor ve şu şekilde yazıyoruz. (Backgroundworker üzerine çift tıklandığında gelen event)</p>
<pre class="brush: csharp;">

//Backgroundworker in Thread i
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
//burda yapmak istediğimiz işlemi yapıyoruz
//örnek olarak for ile 1 den  100 e kadar rasgele bekletiyoruz.
for (int i = 0; i &lt; 100; i++)
{
//Her birim işlem bitiminde report progress methodunu çağırıyoruz
backgroundWorker1.ReportProgress(i);
Thread.Sleep(new Random().Next(10) * 100);
}
}
</pre>
<p>Daha sonra yine Backgroundworker in ProgressChanged eventini yakalıyor ve aşağıdaki kodu yazıyoruz:</p>
<pre class="brush: csharp;">

//Main Thread
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//Progress değiştiğinde göstermek istediğimiz şekilde bunu ekrana gönderiyoruz
progressBar1.Value = e.ProgressPercentage;
}
</pre>
<p>Böylece her durum değişikliğinde çalışan progresschanged bize UI tarafında yapılan işlemle ilgili bilgi verebilmemizi sağlıyor. Bu işlemi direk Do_Work içerisinde yaparsak Cross-Thread olacağından exception verecektir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yilmazyavuz.com/yyblog/index.php/2010/06/backgroundworker-progress-changed-ornegi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

