<?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>Visual C#.it News &#187; WPF</title>
	<atom:link href="http://visualcsharp.it/news/category/wpf/feed/" rel="self" type="application/rss+xml" />
	<link>http://visualcsharp.it/news</link>
	<description>Il blog della comunità italiana del linguaggio C#</description>
	<lastBuildDate>Sat, 12 Dec 2009 09:01:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Accedere a WPF User Interfaces da threads secondari</title>
		<link>http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/</link>
		<comments>http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 12:24:18 +0000</pubDate>
		<dc:creator>Sergio79</dc:creator>
				<category><![CDATA[.NET Framework]]></category>
		<category><![CDATA[Articoli]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[Windows Forms]]></category>
		<category><![CDATA[.Net 3.5]]></category>
		<category><![CDATA[C# 3.0]]></category>
		<category><![CDATA[Thread]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://visualcsharp.it/news/?p=112</guid>
		<description><![CDATA[Chi sviluppa abitualmente applicazioni Windows Form ha spesso l’esigenza di implementare uno, o più thread diversi da quello principale, il più delle volte per ragioni di performance  e attraverso essi accedere ai controlli dell’applicazione.

Come tutti ben sanno, tale accesso non può essere eseguito in modo diretto, ma tramite il metodo Inoke o BeginInvoke della [...]]]></description>
			<content:encoded><![CDATA[<p>Chi sviluppa abitualmente applicazioni Windows Form ha spesso l’esigenza di implementare uno, o più thread diversi da quello principale, il più delle volte per ragioni di performance  e attraverso essi accedere ai controlli dell’applicazione.<br />
<span id="more-112"></span><br />
Come tutti ben sanno, tale accesso non può essere eseguito in modo diretto, ma tramite il metodo Inoke o BeginInvoke della classe Control:</p>
<pre>
using System.Threading;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        private delegate void HandledOnLabelUpadte();
        Thread th;

        public Form1()
        {
            InitializeComponent();

            th = null;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            th = new Thread(Start);
            th.Start();
        }

        private void Start()
        {
            this.Invoke(new HandledOnLabelUpadte(OnLabelUpdate));
        }

        private void OnLabelUpdate()
        {
            label1.Text = "Hello!";
        }
    }
}
</pre>
<p>Al metodo Invoke è stato passato come parametro un delegato che punta alla funzione responsabile dell’aggiornamento del controllo Label.<br />
Nulla di nuovo, questo è ciò che siamo abituati a fare quando intendiamo avere accesso sicuro ad un oggetto Control e suoi derivati.</p>
<p>E in WPF…?<br />
Con l’ultima tecnologia rilasciata da Microsoft dedicata al nuovo tipo di sviluppo di user interface le cose cambiano appena in termini di codice, ma concettualmente non poi così tanto.<br />
L’esempio precedente è qui riproposto in versione WPF Application:</p>
<pre>
using System.Threading;

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        private delegate void HandledOnLabelUpadte();
        Thread th;

        public Window1()
        {
            InitializeComponent();
            th = null;
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            th = new Thread(Start);
            th.Start();
        }

        private void Start()
        {
            this.Dispatcher.Invoke(new HandledOnLabelUpadte(OnLabelUpdate), System.Windows.Threading.DispatcherPriority.Normal);
        }

        private void OnLabelUpdate()
        {
            label1.Content = "Hello!";
        }
    }
}
</pre>
<p>In questo caso è stato utilizzato il metodo Invoke della classe Dispatcher, inserendo un parametro in più inerente la modalità di accesso all’operazione.</p>
<p>La classe Dispatcher offre diverse funzionalità e ci sarebbe molto altro da dire,<br />
su MSDN è possibile trovare documentazione in abbondanza e di facile comprensione.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Condivi questo articolo:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/" rel="nofollow" title="Aggiungi a&nbsp;Bloglines"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/bloglines.png" title="Aggiungi a&nbsp;Bloglines" alt="Aggiungi a&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://buzz.yahoo.com/submit?submitUrl=http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/&amp;submitHeadline=Accedere+a+WPF+User+Interfaces+da+threads+secondari&amp;submitSummary=" rel="nofollow" title="Aggiungi a&nbsp;Buzz"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/buzz.png" title="Aggiungi a&nbsp;Buzz" alt="Aggiungi a&nbsp;Buzz" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/&amp;title=Accedere+a+WPF+User+Interfaces+da+threads+secondari" rel="nofollow" title="Aggiungi a&nbsp;Del.icio.us"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/delicious.png" title="Aggiungi a&nbsp;Del.icio.us" alt="Aggiungi a&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/&amp;title=Accedere+a+WPF+User+Interfaces+da+threads+secondari" rel="nofollow" title="Aggiungi a&nbsp;digg"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/digg.png" title="Aggiungi a&nbsp;digg" alt="Aggiungi a&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/&amp;title=Accedere+a+WPF+User+Interfaces+da+threads+secondari" rel="nofollow" title="Aggiungi a&nbsp;DotNetKicks"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Aggiungi a&nbsp;DotNetKicks" alt="Aggiungi a&nbsp;DotNetKicks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Accedere+a+WPF+User+Interfaces+da+threads+secondari&amp;url=http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/&amp;title=Accedere+a+WPF+User+Interfaces+da+threads+secondari" rel="nofollow" title="Aggiungi a&nbsp;DZone"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/dzone.png" title="Aggiungi a&nbsp;DZone" alt="Aggiungi a&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/" rel="nofollow" title="Aggiungi a&nbsp;Facebook"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/facebook.png" title="Aggiungi a&nbsp;Facebook" alt="Aggiungi a&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/&amp;title=Accedere+a+WPF+User+Interfaces+da+threads+secondari" rel="nofollow" title="Aggiungi a&nbsp;Google Bookmarks"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/google.png" title="Aggiungi a&nbsp;Google Bookmarks" alt="Aggiungi a&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/&amp;title=Accedere+a+WPF+User+Interfaces+da+threads+secondari" rel="nofollow" title="Aggiungi a&nbsp;reddit"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/reddit.png" title="Aggiungi a&nbsp;reddit" alt="Aggiungi a&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/&amp;title=Accedere+a+WPF+User+Interfaces+da+threads+secondari" rel="nofollow" title="Aggiungi a&nbsp;Slashdot"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Aggiungi a&nbsp;Slashdot" alt="Aggiungi a&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/&amp;title=Accedere+a+WPF+User+Interfaces+da+threads+secondari" rel="nofollow" title="Aggiungi a&nbsp;Stumble Upon"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Aggiungi a&nbsp;Stumble Upon" alt="Aggiungi a&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/" rel="nofollow" title="Aggiungi a&nbsp;Squidoo"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Aggiungi a&nbsp;Squidoo" alt="Aggiungi a&nbsp;Squidoo" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/" rel="nofollow" title="Aggiungi a&nbsp;SphereIt"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Aggiungi a&nbsp;SphereIt" alt="Aggiungi a&nbsp;SphereIt" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/" rel="nofollow" title="Aggiungi a&nbsp;Technorati"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/technorati.png" title="Aggiungi a&nbsp;Technorati" alt="Aggiungi a&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Accedere+a+WPF+User+Interfaces+da+threads+secondari+@+http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/" rel="nofollow" title="Aggiungi a&nbsp;Twitter"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/twitter.png" title="Aggiungi a&nbsp;Twitter" alt="Aggiungi a&nbsp;Twitter" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/&amp;t=Accedere+a+WPF+User+Interfaces+da+threads+secondari" rel="nofollow" title="Aggiungi a&nbsp;Yahoo My Web"><img class="social_img" src="http://visualcsharp.it/news/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Aggiungi a&nbsp;Yahoo My Web" alt="Aggiungi a&nbsp;Yahoo My Web" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://visualcsharp.it/news/2009/11/24/accedere-a-wpf-user-interfaces-da-threads-secondari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->