多线程之线程池: 延迟执行, 周期执行, 在线程池中找一个线程去执行指定的方法
介绍
重新想象 Windows 8 Store Apps 之 线程池
通过 ThreadPoolTimer 实现延迟执行
通过 ThreadPoolTimer 实现周期执行
通过 ThreadPool 实现“在线程池中找一个线程去执行指定的方 法”
示例
1、通过 ThreadPoolTimer 实现延迟执行(ThreadPoolTimer 在 Windows.System.Threading 命名空间下)
Thread/ThreadPool/DelayTimer.xaml
<Page x:Class="XamlDemo.Thread.ThreadPool.DelayTimer" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:XamlDemo.Thread.ThreadPool" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Grid Background="Transparent"> <StackPanel Margin="120 0 0 0"> <TextBlock Name="lblMsg" FontSize="14.667" /> <Button Name="btnCreateDelay" Content="延迟 3 秒后执行一个任务" Click="btnCreateDelay_Click_1" Margin="0 10 0 0" /> <Button Name="btnCancelDelay" Content="取消任务" Click="btnCancelDelay_Click_1" Margin="0 10 0 0" /> </StackPanel> </Grid> </Page>
Thread/ThreadPool/DelayTimer.xaml.cs
/* * 通过 ThreadPoolTimer 实现延迟执行(ThreadPoolTimer 在 Windows.System.Threading 命名空间下) * * ThreadPoolTimer - 计时器 * ThreadPoolTimer CreateTimer(TimerElapsedHandler handler, TimeSpan delay, TimerDestroyedHandler destroyed); - 创建一个用于延迟执行的计时器 * handler - 指定的延迟时间过后,所需要执行的方法 * delay - 延迟时间 * destroyed - 当 ThreadPoolTimer 完成了自身的使命后所执行的方法(比如延迟方法执行完了或计时器被取消了) * Cancel() - 取消计时器 * Delay - 延迟时间,只读 */ using System; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.System.Threading; using Windows.UI.Core; namespace XamlDemo.Thread.ThreadPool { public sealed partial class DelayTimer : Page { private ThreadPoolTimer _timer; public DelayTimer() { this.InitializeComponent(); } // 创建一个延迟计时器 private void btnCreateDelay_Click_1(object sender, RoutedEventArgs e) { _timer = ThreadPoolTimer.CreateTimer( (timer) => { var ignored = Dispatcher.RunAsync(CoreDispatcherPriority.High, () => { lblMsg.Text = "任务执行了"; }); }, TimeSpan.FromSeconds(3), (timer) => { var ignored = Dispatcher.RunAsync(CoreDispatcherPriority.High, () => { lblMsg.Text += Environment.NewLine; lblMsg.Text += "ThreadPoolTimer 的使命结束了"; }); }); lblMsg.Text = "延迟 3 秒后执行一个任务"; } // 取消计时器 private void btnCancelDelay_Click_1(object sender, RoutedEventArgs e) { if (_timer != null) { _timer.Cancel(); _timer = null; lblMsg.Text += Environment.NewLine; lblMsg.Text += "任务取消了"; } } } }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索windows
, 线程
, 计时器
, 延迟
, timer
, 延迟执行
, threadpool
, 计时器实现
延迟执行方法
,以便于您获取更多的相关知识。