您的位置:首页 > 其它

Silverlight学习笔记(五)-----使用线程模拟实现Dispatcher倒计时效果

2012-01-14 15:10 375 查看
XAML:

<StackPanel x:Name="LayoutBoot">
<!--创建border-->
<Border x:Name="border" Background="AliceBlue" Margin="5"
BorderBrush="Black" BorderThickness="3" CornerRadius="5">
</Border>
<!--内嵌一个stackpanel画板-->
<StackPanel Orientation="Horizontal">
<!--开始线程按钮-->
<Button x:Name="btnStart" Width="100" Height="30"
Content="开始线程"
Click="btnStart_Click" Margin="10">
</Button>
<!--延时线程按钮-->
<Button x:Name="btnDelay" Width="100" Height="30"
Content="延时2s"
Click="btnDelay_Click"  Margin="10">
</Button>
</StackPanel>
</StackPanel>


C#:

namespace ThreadSample
{
public partial class MainPage : UserControl
{
private static TextBlock tbk;
private System.Threading.Thread myThread;
public MainPage()
{
InitializeComponent();
//添加文本控件tbk
tbk = new TextBlock()
{
FontSize=24,
Width=300,
Height=100
};
//动态加载对象tbk
border.Child = tbk;
//创建新线程
myThread = new Thread(new ThreadStart(SetText));
//设置为后台线程
myThread.IsBackground = true;
}

public static void SetText()
{
int i = 60;
while (i > 0)
{
tbk.Dispatcher.BeginInvoke(delegate()
{
tbk.Text = "离线程结束还有 " + i + " 秒";
});
i--;
Thread.Sleep(1000);
}
}

private void btnStart_Click(object sender, RoutedEventArgs e)
{
myThread.Start();
}

private void btnDelay_Click(object sender, RoutedEventArgs e)
{
myThread.Join(2000);
}
}
}


效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: