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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 多线程往datagridview会造成假死,滚动条无法滚动相关的知识,希望对你有一定的参考价值。

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#winform 多线程绑定datagridview会造成假死,滚动条无法滚动,用委托怎么做

// this是窗体,可以改
// 必须在另一个线程执行,在主线程执行会死机
this.Invoke(new Action(delegate
//绑定datagridview代码
));

参考技术A 把后台执行时间长的代码放到线程中做,当数据都查出来以后,绑定的时候,再invoke来绑定追答

厉害啊,带我一脚可好

参考技术B 楼上说的
this.Invoke(new Action(delegate
//绑定datagridview代码
));
这个很好用追问

这个delegate委托用不用先创建一个 还是直接就这样

追答

直接就这样去用 这样是匿名委托的写法

本回答被提问者和网友采纳

以上是关于c# 多线程往datagridview会造成假死,滚动条无法滚动的主要内容,如果未能解决你的问题,请参考以下文章

C#程序窗口假死

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

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

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

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

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