C#网络应用编程,实验七: 异步编程练习

简介: C#网络应用编程,实验七: 异步编程练习

异步编程练习

通过本实验,熟悉和掌握任务的定义、创建和执行,以及任务的取消和状态获取。

1、创建一个WPF应用程序项目

2、将App.xaml中的Application.Resources节内容改为

在这里插入图片描述

3、修改MainWindow.xaml及代码隐藏类

MainWindow.xaml

在这里插入图片描述

MainWindow.cs主要内容

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp1
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        Button oldButton = new Button();
        public MainWindow()
        {
            InitializeComponent();
        }
        private void button_Click(object sender, RoutedEventArgs e)
        {
            Button btn = e.Source as Button;
            btn.Foreground = Brushes.Black;
            oldButton.Foreground = Brushes.Black;
            oldButton = btn;
            frame1.Source = new Uri(btn.Tag.ToString(), UriKind.Relative);
        }
    }
}

在这里插入图片描述

Page4.xml

Pag4.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp1.Examples
{
    /// <summary>
    /// Page4.xaml 的交互逻辑
    /// </summary>
    public partial class Page4 : Page
    {
        private System.Threading.CancellationTokenSource cts;
        private MyTasks t = new MyTasks();

        public Page4()
        {
            InitializeComponent();
            MyHelps.ChangeState(btnStart, true, btnStop, false);
        }

        private  void BtnStop_Click(object sender, RoutedEventArgs e)
        {
            cts.Cancel();
            MyHelps.ChangeState(btnStart,true,btnStop,false);
        }

        private async void BtnStart_Click(object sender, RoutedEventArgs e)
        {
            MyHelps.ChangeState(btnStart, false, btnStop, true);
            cts = new System.Threading.CancellationTokenSource();
            textBlock1.Text = "开始执行任务......";
            try
            {
                await Task.Run(() => t.Method1(), cts.Token);
                textBlock1.Text += "\n任务1执行完毕";
                var sum = await Task.Run(() => t.Method2(), cts.Token);
                textBlock1.Text += "\n任务2(计算1到1000的和)结果为:"+sum;
                var a = await Task.Run(() => t.Method3(39, 8), cts.Token);
                textBlock1.Text += string.Format("\n任务3(求39除以8的商和余数)结果为:{0},{1}\n", a.Item1, a.Item2);
                while (true)
                {
                    textBlock1.Text += await Task.Run(() => t.Method1("a"),cts.Token);
                    textBlock1.Text += await Task.Run(() => t.Method1("b"),cts.Token);
                }


            }
            catch(OperationCanceledException)
            {
                textBlock1.Text += "\n任务被取消";
            }
           

        }
    }
}

运行结果

在这里插入图片描述

在这里插入图片描述

通过本实验,熟悉和掌握任务的定义、创建和执行,以及任务的取消和状态获取

目录
相关文章
|
1天前
|
安全 网络安全 区块链
【计算巢】区块链技术在网络安全中的应用与挑战
【5月更文挑战第31天】区块链技术为网络安全带来新机遇,其去中心化、不可篡改和共识机制特性有助于身份验证、数据完整性保护及提高网络抗攻击性。但面临性能、隐私保护和法规监管等挑战。简单Python代码展示了区块链在数据完整性验证的应用。随着技术发展,区块链有望在网络安全领域发挥更大作用,未来可能与其它安全技术融合,为网络安全提供更强保障。
|
1天前
|
传感器 网络协议 C语言
C语言在网络编程中的实际应用
C语言在网络编程中的实际应用
8 1
|
1天前
|
机器学习/深度学习 安全 网络安全
云端防御:云计算环境中的网络安全与信息保护策略深度学习在图像识别中的应用与挑战
【5月更文挑战第31天】 在数字化转型的浪潮中,云计算已成为企业及个人存储和处理数据的首选平台。然而,随着云服务的广泛采用,网络安全威胁也随之增加,使得信息安全成为亟待解决的挑战。本文聚焦于云计算环境特有的安全风险,探讨了多层次、多维度的防御策略,旨在为读者提供一套综合的云安全解决方案蓝图。通过分析当前云服务中的安全缺陷,并提出相应的防护措施,文章不仅强调了技术层面的对策,还涉及了管理与合规性方面的重要性。
|
1天前
|
JSON Android开发 开发者
构建高效Android应用:采用Kotlin协程优化网络请求
【5月更文挑战第31天】 在移动开发领域,尤其是针对Android平台,网络请求的管理和性能优化一直是开发者关注的焦点。随着Kotlin语言的普及,其提供的协程特性为异步编程提供了全新的解决方案。本文将深入探讨如何利用Kotlin协程来优化Android应用中的网络请求,从而提升应用的响应速度和用户体验。我们将通过具体实例分析协程与传统异步处理方式的差异,并展示如何在现有项目中集成协程进行网络请求优化。
|
1天前
|
存储 安全 算法
网络安全与信息安全:防范漏洞、应用加密、提升意识
【5月更文挑战第31天】在数字化的浪潮中,网络安全与信息安全已成为守护个人隐私、企业资料与国家安全的重要屏障。本文将深入探讨网络安全漏洞的成因与对策,解析加密技术的种类及其应用,并强调安全意识在整体防御体系中的核心作用。通过技术性分析与实践建议,旨在为读者提供全面的网络安全知识框架和实用的防护指南。
|
12天前
|
消息中间件 Java Linux
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
|
10天前
|
JSON 安全 网络协议
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
|
10天前
|
存储 网络协议 Unix
【Linux 网络】网络编程套接字 -- 详解
【Linux 网络】网络编程套接字 -- 详解
|
10天前
|
存储 网络协议 Linux
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(下)
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(下)
|
10天前
|
存储 网络协议 安全
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(上)
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(上)