Event Dispatcher with Thread : Thread « Data « Silverlight

Home
Silverlight
1.Animations
2.Communication
3.Containers
4.Data
5.Events
6.Graphics
7.Shapes
8.UI Controls
Silverlight » Data » ThreadScreenshots 
Event Dispatcher with Thread
Event Dispatcher with Thread
    

<UserControl x:Class='SilverlightApplication3.MainPage'
    xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' 
    xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
    xmlns:d='http://schemas.microsoft.com/expression/blend/2008' 
    xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006' 
    mc:Ignorable='d' 
    d:DesignWidth='640
    d:DesignHeight='480'>

    <Grid x:Name="LayoutRoot" Background="White">

        <Grid.ColumnDefinitions>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>

        <TextBlock x:Name="tbOutput"
                   Width="200"
                   Height="20" 
                   Grid.Column="0"
                   Grid.Row="0" />

        <Button x:Name="btnStart"
                Width="100"
                Height="20"
                Grid.Column="0"
                Grid.Row="1"
                Content="Start" 
                Click="btnStart_Click" />

    </Grid>

</UserControl>

//File: Page.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Threading;

namespace SilverlightApplication3
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void btnStart_Click(object sender, RoutedEventArgs e)
        {
            ThreadStart ts = new ThreadStart(DoLongRunningTask);
            Thread thread = new Thread(ts);
            thread.Start();
        }

        private void DoLongRunningTask()
        {
            const int SECONDS = 1000;
            Thread.Sleep(* SECONDS);

            Action action = new Action(MarshalToUI);
            this.Dispatcher.BeginInvoke(action);
        }

        private void MarshalToUI()
        {
            tbOutput.Text = "Task completed";
        }

    }
}

   
    
    
    
  
Related examples in the same category
1.Updating the UI from a Background ThreadUpdating the UI from a Background Thread
2.Implementing Threading in Silverlight ApplicationsImplementing Threading in Silverlight Applications
3.Implementing the DoWork eventImplementing the DoWork event
4.Reporting progress changes from the BackgroundWorkerReporting progress changes from the BackgroundWorker
5.Handling the completion of the background taskHandling the completion of the background task
6.Event Dispatcher TimerEvent Dispatcher Timer
7.No Background WorkerNo Background Worker
8.Canceling a BackgroundWorker when a user selects the Escape keyCanceling a BackgroundWorker when a user selects the Escape key
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.