聚集网(jujiwang.com) - 收录免费分类目录信息软文发布网址提交
免费加入

使用 BackgroundWorker 控制应用程序的响应能力 (使用Backspace键可删除光标右边的一个字符)

文章编号:10880时间:2024-09-29人气:


使用Backspace键可光标右边的字符

在現代的計算機科學中,用戶體驗(UX)扮演著至關重要的角色。使用者希望應用程式能立即響應他們的輸入,而無需等待。在某些情況下,執行某些任務可能需要耗費大量時間,例如從伺服器下載資料或處理大量資料。

當應用程式執行此類耗時任務時,它可能會變得無響應,這將導致糟糕的使用者體驗。為了解決這個問題,我們可以使用 BackgroundWorker 類。BackgroundWorker 允許我們在後台執行耗時任務,而不會阻塞主執行緒,從而保持應用程式的響應能力。

BackgroundWorker

BackgroundWorker 是 .NET Framework 中的一個類,它允許我們在後台執行任務,同時保持主執行緒的響應能力。BackgroundWorker 有一個 DoWork 事件,它在後台執行緒上觸發。我們可以將耗時任務放入 DoWork 事件處理常式中,讓後台執行緒執行該任務。

除了 DoWork 事件之外,BackgroundWorker 還具有以下事件:

  • RunWorkerCompleted:在後台任務完成時觸發。
  • 控制应用程序的响应能力
  • ProgressChanged:在後台任務進行時觸發,允許我們更新進度條等 UI 元素。
使用

使用 BackgroundWorker

以下是一個使用 BackgroundWorker 來控制應用程式響應能力的範例:


private void startButton_Click(object sender, EventArgs e)
{// 建立一個 BackgroundWorker 物件。BackgroundWorker backgroundWorker = new BackgroundWorker();// 指定 DoWork 事件處理常式。backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork);// 指定 ProgressChanged 事件處理常式。backgroundWorker.ProgressChanged+= new ProgressChangedEventHandler(backgroundWorker_ProgressChanged);// 指定 RunWorkerCompleted 事件處理常式。backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker_RunWorkerCompleted);// 啟動背景工作者。backgroundWorker.RunWorkerAsync();
}private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{// 在後台執行緒上執行耗時任務。for (int i = 0; i < 10000; i++){// 模擬耗時任務。Thread.Sleep(100);// 報告進度。backgroundWorker.ReportProgress(i);}
}private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{// 更新進度條。progressBar.Value = e.ProgressPercentage;
}private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{// 後台任務完成後執行。MessageBox.Show("任務完成!");
}

在這個範例中,我們建立一個 BackgroundWorker 物件並指定 DoWork、ProgressChanged 和 RunWorkerCompleted 事件處理常式。我們在 DoWork 事件處理常式中執行耗時任務,在 ProgressChanged 事件處理常式中更新進度條,並在RunWorkerCompleted 事件處理常式中顯示訊息框以表示任務已完成。

結論

BackgroundWorker 是控制應用程式響應能力的一個強大工具。通過在後台執行緒上執行耗時任務,我們可以保持主執行緒的響應能力,從而提供更好的使用者體驗。在本文中,我們探討了 BackgroundWorker 的用途,並提供了一個範例說明如何使用它。透過理解和使用 BackgroundWorker,我們可以開發出更具響應能力、使用起來更令人愉快的應用程式。


/**由于时间关系,模糊查询只写了姓名查找***//***模糊查询可能建链表有问题,还有填写工资单也可能有一点问题**/#include #include #include #include #include #include #defineR 8#define T 60 /****addlist有问题******************************************************************************************/#define LEFT 0x4b00/*左*/#define RIGHT 0x4d00 /*右*/#define DOWN 0x5000 /*下*/#define UP 0x4800 /*上*/#define SPACE 0x3920 /*空格*/#define ESC 0x011b /* ESC键*/#define ENTER 0x1c0d /*回车键*/#define Backspace 0xe08 /*擦除键*/#define ALT_B /*组合键ALT_B */#define ALT_M /*组合键ALT_M */#define ALT_H 8960/*组合键ALT_H */#define N 10#define M 20int clst,tvst;/*清洁费&&闭路电视费*/int or=1;/*-1做了更改,1未做更改*/char zhws[N][M],zhchs[N][M],departs[N][M]; /*存储职务名&&技术职称名&&部门名*/char months[][5]={0,Jan,Feb,Mar,Apr,May,Jun,July,Arg,Sep,Oct,Nov,Dec};/*月份名,1月对应1*/char sexs[][7]={male,female};int zhwsp[N],zhchsp[N];/*职务工资&&职称(基本)工资*/FILE *fp;Typedef struct _paylist { int cardnum;/*工资卡号*/ char name[M]; int month;/*月份,进行选择*/ int jbsalary;/*基本工资*/ int zhwsalary; /*职务工资*/ int addition;/*补助*/ int ysalary;/*应发工资*/ int praise;/*特别奖励*/ int tax; /*税金*/ int water; /*水费*/ int elec;/*电费*/ int clean; /*清洁费*/ int tv;/*电视费*/ int salary;/*实发工资*/ struct _paylist *left,*right; }PAYLIST;typedef struct _worker { char name[M]; int sex; /*0男1女*/ char idnum[M];/*身份证号*/ int cardnum; /*工资卡号*/ int age; int wkage;/*工龄*/ int depart; /*选择,部门*/ int zhw; /*选择,职务*/ int zhch; /*选择,职称*/ long zhchnum; /*职称编号*/ long homeph; /*家庭电话*/ char mobile[M]; /*手机*/ int paymons;/*已经记录n个月的工资单*/ struct _worker *front,*down; PAYLIST *right; }WORKER;typedef struct _depart { int name; /*选择,部门名*/ char path[M];/*存储路径名*/ int wknum; /*该部门职工人数*/ struct _depart *left,*right; WORKER *down; } DEPART; typedef struct _tjw {WORKER *wp;struct _tjw *next; }TJW;DEPART *headd,*dep;WORKER *zhp,*wwp;/*起指向作用,不要随便更改;起流动作用*********/TJW *head1;/**头指针**/void load(void);/*从文件中导入部门,职工及工资单信息*/void start(void); /*读取基本数据*/void readdep(DEPART **pp,FILE *fp);/*从文件中读取部门信息*/void writedep(DEPART *p,FILE *fp); /*逐个将部门信息写入文件*/void shchx(WORKER *wp);/*详细输出*/void readw(WORKER **wp,FILE *fp);/*从文件中读取职工信息*/PAYLIST * whtailp(WORKER *wp);/*查找职工------链尾,返回链尾*/void xianshw(void);/************显示第n个部门的职工信息********/PAYLIST * insertp(WORKER *wp,PAYLIST *p,PAYLIST *tail); /*插入新职工,返回链尾*/void addnew(DEPART *dep);/*增加新职工*/PAYLIST * whtailp(WORKER *wp);/*查找职工------链尾,返回链尾*/void changeshuju(void); /*更改基本工资等固定信息*/PAYLIST * rulup(WORKER *wp);/*录入工资单信息*/void addlist(WORKER *zhp);/*增加新职工*/void Dzhg(void); /*****确定某一个具体职工****/void xiansh2(DEPART *dep);void insertdep(void); /****添加新的部门***/void addzh(void);/***添加职务和职称***/void savedep(void); /*保存部门信息*/void savew(void);/*保存职工信息和工资信息***/void day1(void); /***直接打印职工信息**/void day2(void);/****将统计结果打印出来**/void delall(DEPART *dep); /**删除整个部门**/void delone(DEPART *dep,WORKER *p); /*删除一个职工及其工资信息*/void changew(WORKER *p); /*修改职工基本信息*/WORKER * search1();/*通过身分证号查询*/void search3(void);/*通过姓名查询*/void mhsearch(); /*模糊查询*/WORKER * search0();/*通过职称编号查询*/void jqsearch(void); /*精确查询*/void Ashuijin(); /*统计税金总额及排出前十名**/void changep(WORKER *p); /*修改工资单信息*/WORKER * search2();/*通过工资卡号查找*/int key;/*按键变量*/int Textx,texty;/*光标坐标,x行,y列*/struct menustruct/*菜单用的结构体*/{ char name[10];/*主菜单名*/ char str[10][20];/*选项*/ int n;/*选项数*/}ml[R];/*使用了R个,可根据需要增删*/char save[4096],savee[4096];/*保存文本区域空间*//*char sav1[4096];*/char c[4096];/*清屏专用空间*/int i,j;/*常用变量*/void Menu();/*初始化界面*/void SELECTitem();/*定义菜单*/void DrawSelectitem();/*显示主菜单*/void BlackText(int x,int y,char *z);/*选中菜单*/void RedText(int x,int y,char *z);/*正常菜单*/void Run();/*具体操作过程*/void DrawMl(int n);/*显示下拉菜单*/void MoveMl(int n,int x);/*菜单选项的控制*/void Enter(int m,int n);/*菜单选项的具体功能*/void ClrScr();/*自定义清屏函数*/void DingWei(void);void DrawFrame(int left,int up,int right,int down,int textcolor,int backgroundcolor);/*画边框*//***主函数****/void loadmenu(void){ Menu();/*初始化界面*/ Run();/*具体操作过程*/}/*初始化界面*/void Menu(){int a; system(cls); /*调用系统的清屏命令*/ textbackground(GREEN);/*将背景设置为蓝色*/ window(1,1,25,80); clrscr(); textx=3;/*光标初始化位置*/ texty=2; gotoxy(1,2); printf(%c,218);/*画左上角*/ for(i=0;i<78;i++) printf(%c,196); /*画水平直线*/ printf(%c,191);/*画右上角*/ for(i=3;i<=23;i++) {gotoxy(1,i);printf(%c,179); /*画垂直线*/gotoxy(80,i);printf(%c,179); } printf(%c,192); /*画左下角*/ for(i=0;i<78;i++)printf(%c,196); printf(%c,217); /*画右下角*/ gotoxy(1,1); textcolor(7); /*设置灰色*/ for(i=0;i<80;i++)cprintf(%c,219);/*用符号实现画主菜单的灰色背景区*/ for(a=3;a<=23;a++) {gotoxy(T,a);cprintf(%c,179);}/********************************************************************/ DingWei(); Selectitem();/*调用选项函数*/ DrawSelectitem(); /*画选项*/ gettext(2,3,78,23,c); /*保存当前文本区域*/}/*定义菜单*/void Selectitem(){ strcpy(ml[0],FILE);/*下面的具体选项补空格是为了各菜单黑色背景相同*//**************************************************************************/ strcpy(ml[0][0],Load );/*导入某一部门职工信息*/ strcpy(ml[0][1],Shemi);/*设置密码*/ strcpy(ml[0][2],Gaimi);/*修改密码*/ strcpy(ml[0][3],Print);/*打印*/ strcpy(ml[0][4],Save );/*保存*/ strcpy(ml[0][5],Exit );/*退出系统*/ ml[0].n=6; /*保存菜单的项数*/ strcpy(ml[1],INSERT); strcpy(ml[1][0],Newers );/*插入新职工*/ strcpy(ml[1][1],Paylist);/*填写工资单*/ strcpy(ml[1][2],Depart );/*新增部门*/ strcpy(ml[1][3],Zhchs); /*新增职称*/ strcpy(ml[1][4],Zhws );/*新增职务*/ ml[1].n=5; strcpy(ml[2],EDIT);/*编辑修改*/ strcpy(ml[2][0],Imfor);/*职工信息*/ strcpy(ml[2][1],Paylist); /*工资单*/ strcpy(ml[2][2],Tongshu);/*修改基本工资等固定数据*/ ml[2].n=3; strcpy(ml[3],SEARCH);/*查询*/ strcpy(ml[3][0],Jingque); /*精确查询*/ strcpy(ml[3][1],Mohu );/*模糊查询*/ ml[3].n=2; strcpy(ml[4],TONGJI);/*统计*/ strcpy(ml[4][0],Paixu); /*排序*/ strcpy(ml[4][1],Agongzi); /*各类工资总额*/ strcpy(ml[4][2],Ashuijin );/*税金总额(月/年) */ strcpy(ml[4][3],Gzhjigz);/*各工种总数及平均工资*/ ml[4].n=4; strcpy(ml[5],DEL); strcpy(ml[5][0],One); strcpy(ml[5][1],All); ml[5].n=2; strcpy(ml[6],HELP); strcpy(ml[6][0],About); ml[6].n=1;}/*显示主单名*/void DrawSelectitem(){ for(i=0;iscanf(fp,%d%d,&clst,&tvst);fscanf(fp,%d,&j);for(i=0;ileft=NULL;headd->right=NULL;headd->down=NULL;if((p=malloc(sizeof(DEPART)))==NULL){printf(Nei Cun Bu Zu!);exit(-1);}readdep(&p,fp);tail=p;tail->right=NULL;tail->left=headd;tail->down=NULL;headd->right=tail;while(!feof(fp)){if((p=malloc(sizeof(DEPART)))==NULL) { printf(Nei Cun Bu Zu!);exit(-1); }readdep(&p,fp);tail->right=p;p->left=tail;tail=p;tail->right=NULL;tail->down=NULL;}fclose(fp);return;}void savedep(void) /*保存部门信息*/{FILE *fp;int i;DEPART *p;if((fp=fopen(d:\\sal\\,w+))==NULL){printf(Cannot open the file d:\\sal\\);exit(-1);}fprintf(fp,%10d%10d,clst,tvst);for(i=0;iright!=NULL;p=p->right){writedep(p,fp); putchar(\n); }fclose(fp);return;}void changeshuju(void) /*更改基本工资等固定信息*/{ int i; char ch; textbackground(GREEN);textcolor(15);clrscr(); printf(\nThe clean cost:%7d,clst); printf(\nThe tv cost:%7d,tvst); printf(\nIs there anything to be changed?(y/n):); scanf(%1s,&ch); if(ch==y||ch==Y) { printf(\nThe clean cost:); scanf(%d,&clst); printf(\nthe tv cost:); scanf(%d,&tvst); } pri



相关标签: 使用Backspace键可删除光标右边的一个字符使用控制应用程序的响应能力BackgroundWorker

上一篇:利用BackgroundWorker提升跨平台应用程序的

下一篇:BackgroundWorker一种实现异步任务的NET技

内容声明:

1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违法信息,如您发现违法内容,请联系我们进行举报处理!
4、本文地址:http://www.jujiwang.com/article/1fb24bde5ef82fa3eb80.html,复制请保留版权链接!


温馨小提示:在您的网站做上本站友情链接,访问一次即可自动收录并自动排在本站第一位!
随机文章
创新测试的未来:Testage 引领行业变革,提供定制化解决方案 (创新测试的未来展望)

创新测试的未来:Testage 引领行业变革,提供定制化解决方案 (创新测试的未来展望)

在快速发展的技术领域,测试已成为推动创新和质量保证的关键因素,Testage,作为测试行业的领导者,一直站在创新的最前沿,致力于为企业提供定制化解决方案,满足其不断变化的需求,定制化测试服务Testage的核心优势在于其定制化测试服务,他们了解到,每个企业都有独特的目标和要求,标准化测试方法无法满足所有需求,因此,他们提供量身定制的测...。

互联网资讯 2024-09-28 18:20:04

Unity3D开发基础:打造游戏中的肌肉壮汉 (unity3d用什么语言)

Unity3D开发基础:打造游戏中的肌肉壮汉 (unity3d用什么语言)

引言欢迎来到Unity3D开发基础系列教程!在这个教程中,我们将引导你一步步打造一个肌肉壮汉游戏角色,通过这个过程,你将学习Unity3D的基础知识,以及创建3D角色模型和动画所需的基本技术,Unity3D用什么语言,Unity3D使用C编程语言,C是一种面向对象的语言,语法与Java类似,如果你有编程经验,学习C会相对容易,如果没有...。

技术教程 2024-09-26 08:29:09

SQL DATEADD 函数:轻松计算日期和时间差值 (Sqldatareader)

SQL DATEADD 函数:轻松计算日期和时间差值 (Sqldatareader)

DATEDIFF,year,2023,01,01,2024,01,01,1DATEDIFF,month,2022,10,01,2023,01,01,3DATEDIFF,day,2023,01,01,2023,01,11,10DATEDIFF,hour,2023,01,0110,00,00,2023,01,0115,00,00,5DAT...。

最新资讯 2024-09-14 12:30:46

立刻下载免费的个人网页模板,打造你的在线形象

立刻下载免费的个人网页模板,打造你的在线形象

准备好打造你的在线形象了吗,立即下载我们的免费个人网页模板,开始你的旅程吧,凭借我们易于使用且可定制的模板,你可以在短时间内创建出令人印象深刻的个人网站,下载免费模板常见问题解答这些模板需要付费吗,不,我们的模板完全免费下载和使用,我可以对模板进行定制吗,是的,你可以轻松调整颜色、字体、布局和元素,以创建符合你个人风格和品牌的网站,我...。

最新资讯 2024-09-14 05:29:06

small 函数指南:释放 JavaScript 中数字处理的潜力 (small函数excel)

small 函数指南:释放 JavaScript 中数字处理的潜力 (small函数excel)

概述`small,`函数是JavaScript中一个强大的工具,可用于在数字数组中查找最小值,它通过获取一组数字并返回最小的数字来实现此目的,`small,`函数在各种需要数字比较和处理的任务中非常有用,例如,查找最大值或最小值的数组对数字进行排序或过滤进行统计分析和数据操作语法`small,`函数的语法如下,small,k,a...。

最新资讯 2024-09-13 01:13:51

Access数据库为企业:管理复杂数据库的最佳实践 (accessible)

Access数据库为企业:管理复杂数据库的最佳实践 (accessible)

重复数据和验证数据准确性,3.安全性设置用户权限,控制对数据的访问和修改,加密敏感数据,以防止未经授权的访问,定期审查和更新安全措施,以防止数据泄露,4.性能优化优化查询,使用索引、限制结果和减少不必要的连接,使用并发控制机制,例如锁,以确保数据完整性,在功能强大的硬件上部署数据库,以处理大型数据集和大量并发用户,5.可扩展性设计数据...。

最新资讯 2024-09-12 16:17:17

使用PHP建站系统:全面指南,打造自定义网站 (php怎么搭建)

使用PHP建站系统:全面指南,打造自定义网站 (php怎么搭建)

简介PHP是一种流行的服务器端脚本语言,以其易用性和强大的特性而闻名,它被广泛用于创建动态网站和Web应用程序,PHP建站系统,CMS,是基于PHP的工具,它提供了创建、管理和维护网站所需的全部功能,选择PHP建站系统有各种各样的PHP建站系统可供选择,每个建站系统都有自己独特的优点和缺点,在选择建站系统时,需要考虑以下因素,功能,您...。

本站公告 2024-09-12 01:52:00

指针函数揭秘:揭示指针函数在编程中的强大作用 (指针函数揭秘图)

指针函数揭秘:揭示指针函数在编程中的强大作用 (指针函数揭秘图)

指针函数是一种强大的编程工具,它允许我们以一种令人难以置信的灵活方式操作数据和函数,什么是指针函数,指针函数是指向函数的指针变量,它存储函数的地址,使我们能够以类似于函数指针的方式调用函数,指针函数的优势指针函数具有以下优势,灵活性,指针函数可以存储和传递对任何函数的引用,无论其签名或返回类型如何,可复用性,指针函数可以作为参数传递给...。

互联网资讯 2024-09-09 07:03:39

掌握滚动文字代码的技巧:让你的文本在屏幕上翩翩起舞 (掌握滚动文字的方法)

掌握滚动文字代码的技巧:让你的文本在屏幕上翩翩起舞 (掌握滚动文字的方法)

滚动文字是一种让文本自动在屏幕上移动的技巧,这可以通过使用HTML和CSS实现,它可以用来创建各种效果,例如轮播广告、实时更新的新闻提要,或只是为了给你的网站增添一些视觉趣味,实现滚动文字实现滚动文字的步骤如下,在HTML中创建文本容器,并设置其overflow属性为scroll,这将创建一个可滚动的区域,其内容将自动滚动超出容器边界...。

本站公告 2024-09-08 15:49:30

ASP 论坛源码:开源且可定制,满足您网站的特定需求 (ASP论坛源码)

ASP 论坛源码:开源且可定制,满足您网站的特定需求 (ASP论坛源码)

论坛是建立在线社区和促进讨论的极好方式,它们可以用于各种目的,例如提供客户支持、促进团队合作或创建社交网络,如果您正在寻找一种简单的方法来向您的网站添加论坛,那么ASP论坛源码是一个不错的选择,ASP论坛源码是一个开源、可定制的论坛软件,可以满足您的网站的特定需求,ASP论坛源码的主要特性开源且免费易于安装和配置高度可定制支持多种语言...。

最新资讯 2024-09-05 17:55:50

js图片切换:打造具有美感的网站,提升用户体验 (js图片切换效果代码)

js图片切换:打造具有美感的网站,提升用户体验 (js图片切换效果代码)

在现代网页设计中,图片扮演着至关重要的角色,它们不仅可以传达信息,还能增强网站的美观性和吸引力,而使用JavaScript,JS,进行图片切换,可以为网站增添动态效果,提升用户浏览体验,JS图片切换效果代码以下是使用JS实现图片切换效果的代码,<,divclass=slider>,<,divclass=slideactiv...。

互联网资讯 2024-09-05 16:01:07

沈阳故宫神秘之夜:灵异现象揭秘 (沈阳故宫神秘宫殿从未开放的原因)

沈阳故宫神秘之夜:灵异现象揭秘 (沈阳故宫神秘宫殿从未开放的原因)

前言沈阳故宫,又称盛京皇宫,是中国现存最完整的两大宫殿建筑群之一,也是清朝入关前的皇宫,这座古建筑群有着悠久的历史和丰富的文化内涵,但同时它也笼罩着一层神秘的面纱,流传着许多关于灵异现象的传闻,传说中的灵异现象无头宫女现象,相传,在故宫的慈宁宫,经常会出现一个没有头颅的宫女,在宫中游荡,人们认为这是被清朝皇帝杀害的宫女冤魂,哭声现象,...。

互联网资讯 2024-09-05 02:40:42