c#winform多线程

author author     2023-03-30     561

关键词:

我的主窗体是一个MDI窗体,在里面有他、有一个treeview,利用他来打开新的子窗体,请问这种设计的winform程序需不需要用多线程,为什么?最好给个例子,不要复制粘贴!!!分数另付
什么样的程序需要用到多线程

一般在一些网络软件方面需要多线程,单单是管理软件什么的不需要。
在网络软件的话,需要有一个一直读取数据的方法,需要读取远程发来的信息。
方法就是一个死循环。这里如果不用多线程的话,程序一打开就什么也干不了。开了多线程,那个线程就只会干读取这件事,主线程就可以发消息干其他事,两个线程不会相互影响。
参考技术A 你都说了是打开子窗体,就用UI线程就可以了。

一般情况下在Windows编程中,我们会遇到UI线程(界面线程)和工作线程。

界面线程与工作线程有什么不同呢?主要区别就在界面线程会有一个消息队列,用于处理与界面的消息响应。而工作线程则没有,什么时候用工作线程呢?比如说你要去下载东西,下载了多少要在界面上去show一个进度条,这时候你就要用用工作线程来处理下载任务,而UI线程来处理进度条的响应。因为他们好像是同步进行的,而不能分先后。

在C#中,Microsoft为了方便编程人员操作,特定封装了一个工作线程叫BackGroundWorker来为开发人员提供方便。
参考技术B winform打开窗体有2种模式.
一种是模态窗口(showDialog方法),一种是非模态窗口(show方法).
非模态窗口打开后,父窗口的进程不会停止,从而可以继续操作父页面,而打开模态窗口的话,父窗口的进程将会停止,等到模态窗口关闭后,才会继续执行.这是winform程序的规矩.都不需要使用多线程.

比如我要打开一个Form2页面的窗口.
这2种效果是不一样的,试试就知道.

Form2 f2 = new Form2();
f2.Show();

Form2 f2 = new Form2();
f2.ShowDialog();

c#winform多线程案例

...如果用CAD命令为其赋值的话,在CAD里面可以看到这个值,winform窗体上取不到这个值,应该是多线程间通信的问题。(我要取的是代码中dis的值)附上CAD命令[CommandMethod("getDistance")]publicstaticvoidGetDistance()PromptDistanceOptionsprDis... 查看详情

winform多线程实现http网络检测工具

一、背景描述与课程介绍明人不说暗话,跟着阿笨一起玩WinForm。本次分享课程属于《C#高级编程实战技能开发宝典课程系列》中的一部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进... 查看详情

c#winform多线程socket文件上传,下载

一个S,服务器端N个C,客户端上传S随时监听端口,C发来上传文件请求后开始接收文件,如果网络中断,下次C再连接的时候,可以支持上一次文件断点续传下载S随时监听端口,C发来下载文件请求后开始发送文件,如果网络中断,... 查看详情

c#winform多线程绑定datagridview会造成假死,滚动条无法滚动,用委托怎么做

// this是窗体,可以改// 必须在另一个线程执行,在主线程执行会死机this.Invoke(new Action(delegate//绑定datagridview代码));参考技术A把后台执行时间长的代码放到线程中做,当数据都查出来以后,绑定的时候,再invoke来绑定... 查看详情

c#winform多线程更新数据,ui卡顿现象。

我要通过串口采集数据,然后在软件上显示出来。使用线程来采集,想做成异步程序。不知道哪错了,有卡顿现象。主要代码如下://读取D寄存器信息privatevoidReadPLC_D_Date()inti=0;foreach(XinYangClass.PLCDateMainminPLC_D_List)stringDValue=ReadPLCDa... 查看详情

多线程帮助,再次(winForms)

】多线程帮助,再次(winForms)【英文标题】:Multithreadinghelp,yetagain(winForms)【发布时间】:2010-10-2216:43:00【问题描述】:我开发了一个应用程序,每X个线程从我的数据库中提取X个记录。然后每个线程迭代创建的集合并对每条记... 查看详情

winform跨线程访问控件异常

WinForm跨线程访问控件异常最近做了个WinForm的小项目,遇到个简单的问题记录下。需求:点击”下载“,显示正在下载,下载完后更新状态为”ready“(要求用多线程,避免前台卡死)。做法新建一个线程,在新线程中下在更新... 查看详情

winform多线程使用委托操作控件

随手记录privatevoidbarLargeButtonItem5_ItemClick(objectsender,DevExpress.XtraBars.ItemClickEventArgse){//重新加载数据Thread DataThread=newThread(newThreadStart(LoadData));DataThread.IsBackground=true;DataT 查看详情

winform进程,线程

进程:一个进程,代表一个程序线程:一个程序,有多个线程.为什么要使用多线程操作:一个窗体,在创建的时候,默认会生成一个主线程,这个主线程会操作窗体的移动等操作,在执行需要等待时间的方法时,如果没有多线程操作,窗体是无... 查看详情

c#winform程序,ui界面锁死。如何处理?

...始加入时钟禁止,当事件代码执行完再使能时钟,可否?Winform程序,要想保证UI不卡死,只有将长耗时任务放到非UI线程运行这一个办法。而且现在早已进入多核时代,软件上多线程设计的思想要是要有的,不然的话,CPU的性能... 查看详情

winform中多线程与定时器冲突

我在一个winform项目中同时使用了定时器与多线程。程序不稳定,有时会弹出异常System.InvalidOperationException。问题签名:问题事件名称:CLR20r3问题签名01:bscanPlusV3_prepare.exe问题签名02:1.0.0.0问题签名03:59954209问题签名04:System.Drawing问... 查看详情

winform实现多线程异步更新ui(进度及状态信息)

引言在进行Winform程序开发需要进行大量的数据的读写操作的时候,往往会需要一定的时间,然在这个时间段里面,界面ui得不到更新,导致在用户看来界面处于假死的状态,造成了不好的用户体验。所以在大量数据操作的应用上... 查看详情

请教c#winform编程高手,如何解决多界面耗时操作界面僵死的问题

我使用了多个TabPage,每个TabPage都有加入的自定义UserControl组件,在主窗口中使用TabControl时,每个TabPage都是很耗时的操作(例如查询数据库,blublublu),有的长达一分钟多,这样整个界面就僵死了,即使我在UserControl中加入了Back... 查看详情

WinForms中的进程间多线程通信(网络浏览器控件)

】WinForms中的进程间多线程通信(网络浏览器控件)【英文标题】:InterprocessmultithreadedcommunicationinWinForms(webbrowsercontrol)【发布时间】:2011-10-0414:28:16【问题描述】:我有2个进程要在它们之间启用多线程通信。这两个进程都是STA... 查看详情

c#winform多窗口间切换

有一个主页面(不是用于登录),一个选项页面。1、打开程序时,只出现主页面;2、单击主页面的一个按钮,实现主页面关闭(或隐藏)、选项页面打开;3、关闭选项页面(单击窗口上的“X”,或者单击选项页面上的一个按... 查看详情

winform中如何在多线程中更新ui控件--listview实时显示执行信息

1、在winform中,所有对UI的操作,都得回到UI线程(主线程)上来,才不会报错   线程间操作无效:从不是创建控件的线程访问它。2、在winform中,允许通过Control.invoke对控件进行操作。如下代码:privatevoidbtnTest_Click(objectsend... 查看详情

我用c#winform多线程,窗口就假死,等到线程全部完成了才可以点击。请问要怎么才可以让窗口不假死。

下面是代码:privatevoidbutton1_Click(objectsender,EventArgse)Thread[]T=newThread[int.Parse(tb_xc.Text)];for(inti=0;i<int.Parse(tb_xc.Text);i++)T[i]=newThread(newThreadStart(zxmysql));T[i].Name="xianc"+i.ToString();T[i].Start();T[i].Join(5000);publicintss=0;publicvoidzxmysql()intsh... 查看详情

winform多线程

这里有两个按钮,按"启动线程"时,启动一个线程,这个线程的作用是从0开始,每秒累加1,值显示在文本框中,而点"终止线程"时,终止线程,也不再计数了,本人试过很多办法,要么是UI死掉,要么是线程无法终止而导致无法关... 查看详情