c#多线程往datagridview会造成假死,滚动条无法滚动

author author     2023-04-02     570

关键词:

c# 多线程往datagridview会造成假死,滚动条无法滚动
我是新手,我希望得到帮助,求详细的代码和使用办法
真的很紧急,谢谢了
求详细的代码和使用办法

首先多线程同时操作控件是不安全的,必须利用同步锁来控制线程之间的同步,如果要求界面不受影响应考虑采用异步委托 private delegate void UpdateData来实现界面更新,下面是例子
private delegate void UpdateDat(string c1,string c2);

static private Object ULock = new Object();//线程锁

然后利用 new UpdateDat.BeginInvoke(UpdateData);

public void UpdateData(string c1,string c2)

Invoke(new EventHandler(delegate//如果不操作用户控件可以省略此方法

lock (ULock)

lock()



//这里写你的更新代码



));
参考技术A 不用线程才会造成假死..用了怎么会假死呢? 参考技术B 你往线程里做了什么?

c#多线程实现循环。界面会假死怎么办?

如题,我建立了几个线程。里面的方法都是while(true)...Thread.sleep(1)这样的,sleep的值我不想弄太大,这样获取的信息就不是我想要的。但是这样程序运行的时候,界面会有假死的现象,应该如何解决呢参考技术Athis.Refresh(); 查看详情

c#程序窗口假死

...,为了完成某个功能,需要顺序完成若干步骤,如果是多线程,不顺序也行,但每次只能执行一个小步骤,其它步骤必须等待当前步骤执行完才能执行。而且每个步骤之间需要加入一定的时间延迟,缓冲一下(必须这么做),按... 查看详情

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

...ing();T[i].Start();T[i].Join(5000);publicintss=0;publicvoidzxmysql()intshu=dataGridView1.RowCount;trylock(newobject())while(ss<shu)stringip=dataGridView1.Rows[ss].Cells["ip"].Value.ToString();stringyh=dataGridView1.Rows[ss].Cells["zh"].Value.ToString();stringma=dataGridView1.R... 查看详情

c#中我要实现大量的httpwebrequest,但是不想winform假死住,请问用多线程还是异步?

我是用了一个for循环,里面执行httpwebrequest但是一开始执行winforms就基本假死住了一般客户端设计要求来说,耗时处理放在线程中,比如网络请求,数据循环操作之类参考技术A当然是用异步了,asyn/wait 查看详情

c#多线程运行时出现主界面卡死现象如何解决?

...程,用来处理其他事务,如数据库的增删改查等,在3个线程同时开启时会出现主界面的“假死”现象,我尝试过将timer改为Thread,但是提示我不可以跨线程调用,加了将Thread加了委托之后可以实现跨线程了,但是还是会出现“假... 查看详情

c#关于定时器和多线程中对控件的操作以及界面假死的现象。

我想在多线程中对控件进行定时操作,每隔几百毫秒对RichTextBox控件的内容进行添加更新,但是更新了2次,界面就假死了,想问问是怎么回事,相关代码如下:privatevoidForm1_Load(objectsender,EventArgse)//省略其他无关代码timer2.Interval=700;... 查看详情

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

...的用户体验。所以在大量数据操作的应用上,需要使用多线程来处理这种情况。在c#中使用多线程很方便只需要使用System.Threading.Thread的一个实例的Start方法就行了,但是如何实现多线程之间的交互就不是那么简单 查看详情

2.2.12多线程的死锁

java线程死锁是一个经典的多线程问题,因为不同的线程都在等待根本不可能释放的锁,从而导致所有的任务无法继续完成,在多线程技术中,死锁是必须避免的,因为会造成线程的假死。packagecom.cky.thread;/***Createdbyedisonon2017/12/9.... 查看详情

auto.js界面假死

...以就造成了页面“假死”。WebWork,就是为JavaScript创造多线程环境,允许主线程创建WebWorker线程,将一些任务分配给后台运行。在主线程运行的同事,Work线程在后台运行,两者互不干扰。等到Work线程完成计算任务再把结果返回... 查看详情

c#程序窗口假死

主要是因为UI线程被长时间的操作阻塞了。BackgroundWorker算是一种方法。如果不需要太多操作的话,还有一种更简单的方法。就是如果你在UI刷新过程中采用了长时间运算的for循环之类导致阻塞,可以试试在for中每次循环结束时,... 查看详情

c#多线程之旅

阅读目录代码下载一、介绍二、通过TPL进入线程池三、不用TPL进入到线程池v博客前言先交代下背景,写《C#多线程之旅》这个系列文章主要是因为以下几个原因:1.多线程在C/S和B/S架构中用得是非常多的;2.而且多线程的使用是非... 查看详情

测试一下多线程同时往list中添加元素会不会出问题(代码片段)

#encoding:utf-8importdecimalimportrequestsimportloggingimportlogging.configimportrandomimportosimportyamlimporttimeimportthreadingimportreimportdatetimeimportjsonfromqueueimportQueueclassObserver2(obj 查看详情

多线程并发会造成程序周期性崩溃吗?

比如我开了多线程的任务,然后程序差不多一天崩溃一次,这种情况有可能吗?只有线程处理出错才会造成奔溃,简单举个例子,线程刷新控件,你用整个父容器去invork,invork有Begin和end,前提条件还需要你已经创建了句柄,当... 查看详情

c#调用函数后窗体假死失去响应

我想用线程处理函数,但是函数有返回值和参数。我用的异步调用也会出现假死现象publicdelegateintFuncHandle(intdata1,intdata2);intFoo(intdata1,intdata2)inti=0;for(intx=0;x<50000;x++)for(inty=0;y<50000;y++)i+=y;returni;privatevoidButton_Click(objectsender,RoutedEv... 查看详情

浏览器假死

...们先来看一下浏览器的内核处理方式:浏览器的内核是多线程的,它们在内核制控下相互配合以保持同步,一个浏览器至少实现三个常驻线程:javascript引擎线程,GUI渲染线程,浏览器事件触发线程。JavaScript引擎是基于事 查看详情

c#如何使用线程操作datagridview

...个数据查询报表软件,想从数据库中取出数据,然后放入datagridview中。这个功能已经实现。我想做的是,利用线程来操作写入datagridview。问题:当写入datagridview完毕后,貌似线程把该控件给卡住了,没有办法拖动它的滚动条,请... 查看详情

c#异步调用,界面假死

...    return 5;);//  发起一次异步调用,实际上就是在.net线程池中执行longTask//  这时由于是其它线程在工作,UI线程未被阻塞,所以窗体不会假死longTask.BeginInvoke(ar =>    //  使用EndInvoke获取到任务结果(5)    int result... 查看详情

qt多线程和gui界面假死

QThread的常见特性:  run()是线程的入口,就像main()对于应用程序的作用。QThread中对run()的默认实现调用了exec(),从而创建一个QEventLoop对象,由其处理该线程事件队列(每一个线程都有一个属于自己的事件队列)中的事件。简... 查看详情