栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

跨线程操作无效:从创建该线程的线程以外的线程访问控件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

跨线程操作无效:从创建该线程的线程以外的线程访问控件

根据Prera​​k K的更新评论(已删除):

我想我没有正确提出问题。

情况是这样的:我想根据控件的值将数据加载到全局变量中。我不想从子线程更改控件的值。我永远不会从子线程执行此操作。

因此,仅访问该值,以便可以从数据库中获取相应的数据。

您想要的解决方案应如下所示:

UserContrl1_LOadDataMethod(){    string name = "";    if(textbox1.InvokeRequired)    {        textbox1.Invoke(new MethodInvoker(delegate { name = textbox1.text; }));    }    if(name == "MyName")    {        // do whatever    }}

尝试切换回控件的线程 之前, 请在单独的线程中 进行 认真的处理。例如:

UserContrl1_LOadDataMethod(){    if(textbox1.text=="MyName") //<<======Now it wont give exception**    {        //Load data correspondin to "MyName"        //Populate a globale variable List<string> which will be        //bound to grid at some later stage        if(InvokeRequired)        { // after we've done all the processing,  this.Invoke(new MethodInvoker(delegate {     // load the control with the appropriate data })); return;        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/421515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号