<?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>Symbol LABoratory &#187; homokóra</title>
	<atom:link href="http://lab.symboltech.hu/tag/homokora/feed/" rel="self" type="application/rss+xml" />
	<link>http://lab.symboltech.hu</link>
	<description>Kreativitás és Innováció a szoftveriparban</description>
	<lastBuildDate>Tue, 03 Jan 2012 14:24:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Ha várni kell a Windowsban &#8211; A jó öreg homokóra</title>
		<link>http://lab.symboltech.hu/2009/07/ha-varni-kell-a-windowsban-a-jo-oreg-homokora/</link>
		<comments>http://lab.symboltech.hu/2009/07/ha-varni-kell-a-windowsban-a-jo-oreg-homokora/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 08:13:56 +0000</pubDate>
		<dc:creator>developerteam</dc:creator>
				<category><![CDATA[Fejlesztői hírek]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[cursor]]></category>
		<category><![CDATA[forráskód]]></category>
		<category><![CDATA[homokóra]]></category>
		<category><![CDATA[hourglass]]></category>
		<category><![CDATA[idisposable]]></category>
		<category><![CDATA[várakozás]]></category>
		<category><![CDATA[waitcursor]]></category>

		<guid isPermaLink="false">http://lab.symboltech.hu/?p=293</guid>
		<description><![CDATA[Gyakran fordul elő, hogy homokórát kell megjelenítenünk, mert valamilyen művelet hosszabb időt vehet igénybe. A felhasználó pedig várakozzon, ahelyett, hogy a beviteli mezőket próbálja szerkeszteni vagy a gombokat működésre bírni.]]></description>
			<content:encoded><![CDATA[<p>Gyakran fordul elő, hogy homokórát kell megjelenítenünk, mert valamilyen művelet hosszabb időt vehet igénybe. A felhasználó pedig várakozzon, ahelyett, hogy a beviteli mezőket próbálja szerkeszteni vagy a gombokat működésre bírni.</p>
<p>Régebbi programozási nyelvekben (Delphi, FoxPro) a hosszú műveletek automatikusan beállították a homokóra üzemmódot. Viszont nem kezelték jól a beágyazott műveleteket, azaz 10 darab SELECT végrehajtása egymás után 10 homokórás villogást eredményezett. Ez a mai világban inkább szégyenletes, mint felhasználóbarát.</p>
<p> </p>
<p>Ezt a problémát oldottuk meg az alábbi kódrészlettel:</p>
<pre>using System;
using System.Windows.Forms;</pre>
<pre>namespace SymbolTech.Common
{
    public class WaitCursor : IDisposable
    {
        private static int waitcursorlevel = 0;

        public WaitCursor()
        {
            waitcursorlevel++;
            if (waitcursorlevel &gt; 0)
                Cursor.Current = Cursors.WaitCursor;
        }

        public void Dispose()
        {
            waitcursorlevel--;
            if (waitcursorlevel == 0)
                Cursor.Current = Cursors.Default;
        }
    }
}</pre>
<p>Minden (hosszabb) műveletet beágyazunk egy <code>using(new WaitCursor()) </code>blokkba. Ezzel a következő előnyöket érjük el:</p>
<ol>
<li>A műveletek minden esetben &#8220;homokórázni&#8221; fognak.</li>
<li>A beágyazott műveletek (külső blokk már homokórában dolgozik, a belső, mondjuk 100 iteráció is bekapcsolja a homkórát) nem fogják villogtatni a kurzort.</li>
<li>Véletlenül sem felejtjük el visszakapcsolni az alapértelmezett kurzort, amennyiben a műveletek végrehajtásra kerültek.</li>
</ol>
<p> </p>
<p>Lássunk egy példát, a használatára:</p>
<pre>        private void DummyMethod()
        {
            using (new WaitCursor())
            {
                Thread.Sleep(100);
            }
        }</pre>
<pre>        private void button1_Click(object sender, EventArgs e)
        {
            using (new WaitCursor())
            {
                Thread.Sleep(500);
                for (int i = 0; i &lt; 10; i++)
                    DummyMethod();
            }
        }</pre>
<p>A példában egy beágyazott, többször (10x) végrehajtott műveletet látunk, amelyek összességében 1.5mp-re átkapcsolnak homokórára, de közben nem villog a kurzor.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.symboltech.hu/2009/07/ha-varni-kell-a-windowsban-a-jo-oreg-homokora/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

