说到多线程,首先我们得了解他的应用领域,用在哪、一般当应用程序中需要处理界面逻辑的同时又要去处理其它的逻辑行为,如果是在单线程下那么就要按照顺序依次去完成,如果需要同时完全或者在一件事做到某种程度时再做另外一件事情,就可以通过多线程来进行处理。
接下来将演示如何利用多线程去实现一个简单的倒计时功能:
Xaml:
1 <Grid x:Name="LayoutRoot" Background="White">
2 <StackPanel Name="stackPanel" Orientation="Horizontal">
3 <Button Name="btnStart" Content="开始" Width="60" Height="20" Click="btnStart_Click" />
4 <Button Name="btnJoin" Content="延时" Width="60" Height="20" Click="btnJoin_Click" />
5 </StackPanel>
6 </Grid>
C#:
public partial class MainPage : UserControl
{
private static TextBlock tbk;
private Thread newThread;
public MainPage()
{
InitializeComponent();
tbk = new TextBlock() { FontSize=12,Width=200,Height=100 , };
LayoutRoot.Children.Add(tbk);
newThread = new Thread(MainPage.SetText);
}
private void btnStart_Click(object sender, RoutedEventArgs e)
{
newThread.Start();
}
private void btnJoin_Click(object sender, RoutedEventArgs e)
{
newThread.Join(2000);
}
public static void SetText()
{
int i = 60;
while (i>0)
{
tbk.Dispatcher.BeginInvoke(delegate() { tbk.Text = "倒计时:" + i + "秒"; });
i--; Thread.Sleep(1000);
}
}
}
本文是阅读《Silverlight3.0开发详解与最佳实践》的学习笔记,只是针对于多线程的简要介绍,多线程的使用有利也有弊,其处理复杂,易引发线程争用,死锁等现象。