首页 > 编程语言 >c#写一个WINFORM的多线程操作

c#写一个WINFORM的多线程操作

时间:2024-07-24 22:09:35浏览次数:17  
标签:异步 c# System Label stopwatch Stopwatch 操作 多线程 WINFORM

  • 以下是一个简单的示例,展示了如何在C# WinForms中创建一个按钮的异步事件,并使用Label控件来显示事件执行的时长。

    首先,确保你已经在你的项目中添加了一个Button和一个Label控件。假设按钮的名称是btnAsync,标签的名称是lblDuration

    然后,在你的Form类中,添加以下代码:

    csharp
    using System;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
            btnAsync.Click += BtnAsync_Click; // 注册按钮点击事件
        }
    
        private async void BtnAsync_Click(object sender, EventArgs e)
        {
            // 开始计时
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();
    
            // 模拟异步操作
            await DoSomeAsyncWork();
    
            // 停止计时并更新Label显示时长
            stopwatch.Stop();
            lblDuration.Text = $"操作耗时: {stopwatch.ElapsedMilliseconds} 毫秒";
        }
    
        private async Task DoSomeAsyncWork()
        {
            // 这里可以替换为任何异步操作,例如网络请求或文件读写等
            await Task.Delay(2000); // 模拟耗时操作,延迟2秒
        }
    }
    

    在这个示例中,我们使用了System.Diagnostics.Stopwatch来测量事件执行的时长。当按钮被点击时,异步方法DoSomeAsyncWork会被调用,并且在该方法完成之前,不会阻塞UI线程。在异步操作完成后,我们会更新Label控件的文本,显示操作耗时。

    请确保你的项目引用了System.Diagnostics命名空间,以便使用Stopwatch类。

 

2024-07-24 22:00:31【出处】:https://www.cnblogs.com/weipt/p/18321004

=======================================================================================

标签:异步,c#,System,Label,stopwatch,Stopwatch,操作,多线程,WINFORM
From: https://www.cnblogs.com/mq0036/p/18321857

相关文章

  • YC322A [ 20240724 CQYC NOIP 模拟赛 T4 ] 庫的 序计数(counting)
    题意给定一棵树\(T\),每次操作在某个点下方接上\(k\)个儿子。询问期望多少次排列,使得\(a_{fa_i}<a_i\)。保证\(k\)是偶数,对\(65536\)取模。\(n\le10^5,k\le2\times10^9\)。Sol考虑假如已经确定了一棵树的形态,如何求出最终的答案?可以发现对于每一个节点......
  • POJ3278 Catch That Cow
    CatchThatCowTimeLimit: 2000MS MemoryLimit: 65536KTotalSubmissions: 222142 Accepted: 67092DescriptionFarmerJohnhasbeeninformedofthelocationofafugitivecowandwantstocatchherimmediately.Hestartsatapoint N (0......
  • locust多进程实现分布式压测遇到的问题
    多进程分布式的实现:locust分布式时,需借助命令locust一个一个启动worker,在使用中有点繁琐,下面借助于多进程,按既定worker数量,一键启动;fromlocustimportFastHttpUser,task,User,events,HttpUser#classWebsiteUser(FastHttpUser):错误的使用!!!classWebsiteUser(......
  • Codeforces Round 961 (Div. 2)
    A.Diagonals----------------------------题解----------------------------------注意读题,题目中只有i+j相同的格子才是一个对角线,也就是说,(1,1)(2,2)(3,3)的那条大斜线不是个对角线,如图所示这是一个3*3的图中所有的对角线,那么我们只需要如图所示,从中间往两边依次放就可以,......
  • 关于珞石机器人二次开发SDK的posture函数的算法RX RY RZ纠正 C#
    在珞石SDK二次开发的函数钟,获取当前机器人位姿的函数posture函数在输出时会发现数据不正确,与示教器数据不一致。其中第一个数据正确第二三各数据为相反第四五六各数据为弧度制转换方法为(弧度/PI)*180度然后发现第四个数据还要加上180度第五六各数据要取反,,所以设计了以下......
  • cannot reclaim 52428800 bytes disk space from 4070572032 limit
    RMAN>backupdatabase;Startingbackupat24-JUL-24usingchannelORA_DISK_1channelORA_DISK_1:startingfulldatafilebackupsetchannelORA_DISK_1:specifyingdatafile(s)inbackupsetinputdatafilefilenumber=00001name=/u01/app/oracle/oradata/orcl/s......
  • 1330、基于51单片机蓝牙远程消防灭火小车 寻火源避障灭火小车(程序+原理图+PCB源文件+
    毕设帮助、开题指导、技术解答(有偿)见文未  目录方案选择单片机的选择显示器选择方案一、设计功能二、实物图单片机模块设计三、原理图四、程序源码五、PCB图资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。方......
  • 基于 LangChain+LangGraph 来实现一个翻译项目
    相信大家在看文档的时候,有时会比较苦恼,比如AI相关的文档都是外文,中文文档比较少,看起来会比较吃力,有的时候会看不懂,翻译软件又翻得很乱,完全看不了,今天就基于LangChain和LangGranph将吴恩达博士的一个项目给搬过来。一方面就是为了自己看文档方便点,另一方面也是练练手,用用......
  • Vue全家桶 - pinia 的理解和学习1(Pinia 核心概念的 Store、State、Getter、Action)
    Pinia(Vue的专属状态管理库)Pinia和Vuex的区别设计理念和架构Vuex采用集中式架构,所有状态存储在一个全局状态树中,通过mutations和actions来修改和处理状态。Pinia采用去中心化的架构,每个模块有自己的状态,这使得Pinia在代码分割和模块化方面更加灵活。TypeSc......
  • Activiti删除外键
    Activiti相关数据库表定义了很多外键,在自定义驳回、收回操作时,很容易出现外键引起的操作失败,亲测有两种方法解决:1、临时关闭外键约束1.1操作开始前执行SETFOREIGN_KEY_CHECKS=0;关闭外键约束1.2操作完成后执行SETFOREIGN_KEY_CHECKS=1;开启外键约束2、删除Activiti相关表......