zoukankan      html  css  js  c++  java
  • windows phone 8异步编程开发笔记

                  windows phone 8的异步编程

     关于windows phone 8 中的高级编程<异步编程>

    同步方法和异步方法的区别

    同步方法调用在程序继续执行之前需要等待同步方法执行完毕返回结果
    异步方法则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执行其它操作

    下面的实现代码和效果

    第一:

      我们前台的设计.

    代码如下:

    1     <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    2             <Button Content="同步操作" FontSize="25" HorizontalAlignment="Left" Margin="24,10,0,0" VerticalAlignment="Top" Height="93" Width="404" Click="Button_Click_1"/>
    3             <Button Content="异步操作" Margin="24,84,28,435" FontSize="25" Click="Button_Click_2"/>
    4             <Button Content="添加" FontSize="25" HorizontalAlignment="Left" Margin="24,152,0,0" VerticalAlignment="Top" Height="105" Width="206" Click="Button_Click_3"/>
    5             <ListBox Name="listbox01" Margin="24,359,28,42"/>
    6             <TextBox Name="textbox01" HorizontalAlignment="Left" Height="92" Margin="24,262,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="404"/>
    7             <Button Content="显示" FontSize="25" HorizontalAlignment="Left" Margin="210,152,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.367,0.111" Height="105" Width="218" Click="Button_Click_4"/>
    8     </Grid>

     后台代码: 1 /// <summary>

    
    
     1 /// <summary>
     2         /// 这是用来测试的数组
     3         /// </summary>
     4         private int  []Peng = new int[]{1,3212,123123,4321,5,6,7,8,234,75,123,75,21,312,643,641,123,2};
     5         private void Button_Click_1(object sender, RoutedEventArgs e)
     6         {
     7             //Task同步的实现的工厂的委托给我下面写到的LongTime的方法
     8             var someTake = Task<int>.Factory.StartNew(() => LongTime(1, 2));
     9             //同时打印出来
    10             MessageBox.Show("Result:"+someTake.Result.ToString());
    11         }
    12         /// <summary>
    13         /// 用于委托的方法
    14         /// </summary>
    15         /// <param name="a"></param>
    16         /// <param name="b"></param>
    17         /// <returns></returns>
    18         private int LongTime( int a, int b) 
    19         {
    20             //让程序延迟2秒
    21             Thread.Sleep(3000);
    22             return a + b;
    23         }
    24         /// <summary>
    25         /// 异步方法的实现
    26         /// </summary>
    27         /// <param name="sender"></param>
    28         /// <param name="e"></param>
    29         private async void Button_Click_2(object sender, RoutedEventArgs e)
    30         {
    31             Debug.WriteLine("处理同步的事件");
    32             var someTake = Task<int>.Factory.StartNew(()=>LongTime(1,2));
    33             //异步的操作
    34             int cout=await someTake;
    35             cout += cout;
    36             Debug.WriteLine("任务返回,再次回到调用的线程");
    37             MessageBox.Show("Resutl:"+someTake.Result.ToString()+"
    "+cout);
    38         }
    39         /// <summary>
    40         /// 向App.situation集合添加内容
    41         /// </summary>
    42         /// <param name="sender"></param>
    43         /// <param name="e"></param>
    44         private void Button_Click_3(object sender, RoutedEventArgs e)
    45         {
    46             string Name=textbox01.Text;
    47             //这是生命在App.xmal.cs中的一个字段
    48             App.situation = new List<string>();
    49             App.situation.Add(Name);
    50         }
    51         /// <summary>
    52         /// 点击自己实现线程的异步操作
    53         /// </summary>
    54         /// <param name="sender"></param>
    55         /// <param name="e"></param>
    56         private void Button_Click_4(object sender, RoutedEventArgs e)
    57         {
    58             //这是实现我们线程自己来时实现异步线程操作
    59             try
    60             {
    61                 var mytest2 = App.situation.Select((Name) => Name.ToLower());//实现把大写的都转换为小写的
    62                 foreach (var item in mytest2)
    63                 {
    64                     Debug.WriteLine(item.ToString());
    65                 }
    66                 listbox01.ItemsSource = mytest2;
    67             }
    68             catch (Exception) 
    69             {
    70                 return;
    71             }
    72                 
    73         }
    
    
    
     

          下面代码的是生命在App.xmal.cs中的文件下的因为每一个窗体都继承了他所以我们在里面添加一个字段也是可以的

      App.situation = new List<string>();
    下面是APP.xmal.cs文件插入的代码
    public static List<string> situation;
    实现的效果如下
           同步操作图       异步点击图         textbox写入值        自己实现的简单线程异步


          今天到这。。。精彩还在后面。。。亲。。请继续关注。。。从现在起你的相信你自己你的别谁都要强。。。好好来体验程序带来的乐趣吧。。。其乐无穷
  • 相关阅读:
    singleton模式 在软件开发中的运用
    State Pattern
    闲话闲说——关于异常
    程序人生
    Event
    SerialPort实现modem的来电显示
    利用枚举进行状态的设计
    职责链模式的运用
    我对当前项目的一些看法
    SHAREPOINT 2007 网站模板(解决方案)安装和卸载
  • 原文地址:https://www.cnblogs.com/haoBai/p/3159875.html
Copyright © 2011-2022 走看看