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

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

时间:2024-07-24 15:43:46浏览次数:11  
标签:异步 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类。

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

相关文章

  • MYSQL中SHOW PROCESSLIST使用
    SHOWPROCESSLIST是显示用户正在运行的线程,需要注意的是,除了root用户能看到所有正在运行的线程外,其他用户都只能看到自己正在运行的线程,看不到其它用户正在运行的线程。除非单独个这个用户赋予了PROCESS权限。通常我们通过top检查发现mysqlCPU或者iowait过高那么解决这些问题......
  • pyTorch模型调优NPU
    性能分析工具pyTorchProfiling CANNProfiling看taskduration调优手段1:使用亲和的数据类型用AMP训练  AICore不支持torch.long.Tensor类型,会自动切换AICPU,影响训练。调优手段2:优化调度耗时(融合tensor) 融合算子 昇腾要求输入tensor连续,所以进行非连续内存转......
  • java8interface的新特性:default,static,funcation
    default:默认方法在类接口中可以直接定义的方法,实现接口的类可以直接使用使用案例:publicinterfaceMyInterface{defaultvoiddisplay(){System.out.println("Thisisdefaultmethod.");}}说明:被default修饰的方法可以不被子类实现。即在......
  • 1.2.3_1 OSI参考模型&TCP/IP模型
    一、术语二、常见网络设备的功能层次    对于OSI模型,主机实现了第17层的全部,集线器实现了第1层,交换机实现了第12层,路由器实现了第1~3层。1、物理层    物理层的任务是实现相邻节点之间比特(0或1)的传输。需要定义电路接口的参数(如:形状、尺寸、引脚数等)。需要......
  • LeetCode226. 翻转二叉树
    LeetCode题目链接:https://leetcode.cn/problems/invert-binary-tree/题目叙述:给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例2:输入:root=[2,1,3]输出:[2,3,1]示例3:输入:root=[]输出:[]思路这道......
  • Jenkins下配置java的静态代码检测:findbugs、pmd及checkstyle实现代码自动检测
    一、插件介绍工具目的检查项FindBugs检查.class基于BugPatterns概念,查找javabytecode(.class文件)中的潜在bug主要检查bytecode中的bugpatterns,如NullPoint空指针检查、没有合理关闭资源、字符串相同判断错(==,而不是equals)等Duplicatecode帮助开......
  • 为什么我的 VS Code 终端有时会显示重复的输出行,可以采取哪些措施来防止这种情况发生?
    我在VSCode中运行Python脚本,内置终端有时会错误地显示重复的输出块。下面是一个示例:在本例中,我请求打印一个20行的表格(max_rows=20),但VSCode终端在尝试显示表格的第一部分时“结结巴巴”。为什么会发生这种情况以及解决方法是什么?......
  • Solution - Atcoder Xmas2019D Sum of (-1)^f(n).md
    对于\(f(i)=(-1)^{\sum\limits_jc_j}(i=\prod\limits_jp_j^{c_j}(p_j\in\mathbb{P}))\),一个比较特殊的值就是在\(i\in\mathbb{P}\)时有\(f(i)=-1\)。于是考虑PowerfulNumber筛,构造积性函数\(g\)使得对于\(i\in\mathbb{P}\)有\(g(p)=f(p)\)且\(g\)易......
  • vulnhub DC-5
    信息搜集扫描局域网存活主机nmap-sP192.168.19.128/24发现存在主机192.168.19.132,接下来探测开放端口nmap-p-192.168.19.132发现存在如下三个开放端口80/tcpopenhttp111/tcpopenrpcbind50742/tcpopenunknown这里简单的了解一下什么是rpc和rpcbind.......
  • Failed to create JVM.JVM Path:D:\IntelliJ IDEA 2024.1.4\jbr Error launching I
     IDEA修改启动参数掉大坑!情况说明:在Help>EditCustom VMOptions修改IDEA的VM产生之后无法打开(重启/重装多次依然无法打开),修改C盘的idea64.exe.vmoptions和安装目录的idea64.exe.vmoptions依然无法启动!,后面把IDEA安装目录的jar文件夹删了,又重装JDK。由于我有多个JDK环境,......