private void ThreadSafeInvoke(Control control, MethodInvoker invoker)
{
if (control.InvokeRequired)
{
control.Invoke(invoker);
}
else
{
invoker();
}
}
调用:匿名方法
//设置文本
ThreadSafeInvoke(this,delegate()
{
int Cnt = int.Parse(this.listView1.Items[RuleDic[regDetail.SiteID].RowIndex].SubItems[2].Text);
Cnt++;
this.listView1.Items[RuleDic[regDetail.SiteID].RowIndex].SubItems[2].Text = Cnt.ToString();
});
分享到:
相关推荐
多个线程竞争读写同一个资源往往会造成意想不到的意外结果,UI界面也是一种资源,所以跨线程修改UI界面往往被加以限制。这里采用Task + MethodInvoker的方式完成跨线程对UI对的修改。
下面小编就为大家分享一篇浅谈C#跨线程调用窗体控件(比如TextBox)引发的线程安全问题,具有很好的参考价值,希望对大家有所帮助
跨线程访问Windows窗体控件,线程带多参数。 跨线程访问Windows窗体控件,线程带多参数。
访问 Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用情况和死锁。确保以线程安全方式访问...
C# 跨线程访问UI线程控件 在C#中,由于使用线程和调用UI的线程属于两个不同的线程,如果在线程中直接设置UI元素的属性,此时就会出现跨线程错误。 下面介绍两种解决方案 第一种:使用控件自带的Invoke或者...
使用delegate和Invoke,使用delegate和BeginInvoke,使用BackgroundWorker组件,使用SynchronizationContext组件
C# Winform 利用线程延时创建子窗体并且可跨线程控制主窗体的控件
[WPF]跨线程控制窗体UI.pdf
Thread 达到跨线程更新UI 虽然使用Dispatcher.Invoke 和模拟winform 里面的DoEvent 但是运行中关闭还是会有异常,而且耗资源高; 第二种 : DispatcherTimer 失败:UI还是会卡顿; 第三种 : Timer 建议使用、资源...
vbnet线程入门详解_跨线程调用窗体控件[收集].pdf
c#编程跨线程调用窗体的方法 文中没有过多的理论说明 采用例证方式对该方法进行了说明,简单易懂 适合新手入门
form1中开启线程thread,thread的方法crossthreadaddnum在类cross中实现在crossthreadaddnum中调用form1中的listbox1
VBnet源码,C#可用。分线程窗体,主线程卡死任然报告方法的进度值到UI窗体上面
Java非线程安全类变线程安全类.pdf
pdf版
创建worker线程 线程互斥 临界 信号 事件 UI线程等各种线程例子
WinForm后台线程与UI线程通讯 实现进度条变化
奇猫居-神游天地间:http://www.qimao.cn WinForm版本(源代码),集成多线程 跨线程 窗体同步 进度条 生产消费,是我练手时写的,可用来参考。