在c#中关于线程调用控件

由于c#不允许非创造控件线程调用控件,所以遇到过很多问题。

提示:

线程间操作无效: 从不是创建控件“showtable_btn”的线程访问它。

有些小郁闷

因为是刚刚使用thread

原始代码大概如下

private void showtable_btn_Click(object sender, EventArgs e)

{

thread t = new thead(s)

t.start()

}

 

private void s()

{

textbox1.text = "www";

}

 

如果报出上述的错误 

 

于是我做了的修改

 

1.增加一个

delegate void SetVisibleDelegate();

2.新加一个函数

privare void sinvoke()

{

this.Invoke(new SetVisibleDelegate(s))

}

3.之后重新调用

private void showtable_btn_Click(object sender, EventArgs e)

{

thread t = new thead(sinvoke)

t.start()

}

这样的话

一切就OK了

时间: 2025-01-02 12:15:36

在c#中关于线程调用控件的相关文章

C# 跨线程调用控件

原文:C# 跨线程调用控件 在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应.  同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法   阅读目录 线程间操作无效 第一种办法:禁止编译器对跨线程访问做检查 第二种办法: 使用delegate和invoke来从其他线程中调用控件 第三种办法: 使用delegate和BeginInvoke来从其他线程中控制控件 第四种办法: 使用BackgroundWorker组件 源代码下载   线程间操作无效

windows跨线程调用控件的方法

用户不喜欢反应慢的程序.在执行耗时较长的操作时,使用多线程是明智之举,它可以提高程序 UI 的响应速度,使得一切运行显得更为快速.在Windows 中进行多线程编程曾经是 C++ 开发人员的专属特权,但是现在,可以使用所有兼容 Microsoft .NET 的语言来编写. 不过Windows 窗体体系结构对线程使用制定了严格的规则.如果只是编写单线程应用程序,则没必要知道这些规则,这是因为单线程的代码不可能违反这些规则.然而,一旦采用多线程,就需要理解 Windows 窗体中最重要的一条线程规则

c++-vc程序中调用控件的方法,谢谢。

问题描述 vc程序中调用控件的方法,谢谢. 程序中该如何调用ntgraph这个画图控件.我刚接触控件,现在仅能在对话框中插入该控件的水平.1.程序和控件是分别建个工程吗?2.在程序中该怎么调用控件呢?我想用这个控件的一个画图函数.百度后只了解到要在头文件中插入代码还有之类的看不懂了.希望有人能帮忙回答下或着发份相关资料,时间比较紧,十分感谢! 解决方案 这次请看清楚,不要采纳错了.谢谢 解决方案二: 新建一个mfc对话框程序,然后在对话框设计器中插入activex控件,选择你的控件即可. 参考:

link函数中如何实现传控件的功能?如何将控件放在函数中调用?

问题描述 link函数中如何实现传控件的功能?如何将控件放在函数中调用? link函数中如何实现传控件的功能?如何将控件放在函数中调用? 解决方案 直接将控件作为参数即可 void foo(Control c, ...)

win8 app store开发中在线程或定时器中访问页面的控件

问题描述 win8appstore开发中在线程或定时器中访问页面的控件,请问怎样实现 解决方案 解决方案二:Dispatcher.runasync解决方案三:参考

android:在Activity如何写一种方法,当调用时可以永久的向原来的布局中增添或修改控件?

问题描述 android:在Activity如何写一种方法,当调用时可以永久的向原来的布局中增添或修改控件? 如题,在Activity如何写一种方法,当调用时可以永久的向原来的布局中增添或修改控件? 解决方案 不明白干嘛,添加控件,无非就是先创建或渲染出一个view,然后通过addview加入到指定的容器中 解决方案二: 可控的话 先写在xml中设visible为gone. 需要的时候设置为visible 解决方案三: 不太清楚你的意思.如果就是添加界面的话,可以用两种方法,一种是楼上说的,可以

从在 Internet Explorer 中使用 Windows 窗体控件开始谈Smart Client

client|window|控件 首先引用Microsoft Windows 窗体快速入门教程上的文章"在 Internet Explorer 中使用 Windows 窗体控件":(如果引用的一些信息无法正常显示,请直接上面上的链接查看) 本主题描述如何在 Internet Explorer (IE) 内成功地执行 Windows 窗体控件.IE 内的 Windows 窗体控件无需用户提示即可激活,它不要求注册,而且利用公共语言运行库 (CLR) 代码访问安全性. 在 Internet

关于线程改变控件的问题?

问题描述 privatevoidTest(){while(true){if(s){Thread.Sleep(2000);axMSComm1.Output="AT+CMGF=1r";s=false;if(tt!=null&&(tt.ThreadState==ThreadState.Running)){tt.Abort();}tt=newThread(newThreadStart(Test2));tt.Start();td.Abort();break;}}}privatev

温故而知新:WinForm/Silverlight多线程编程中如何更新UI控件的值

单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么做,比如: private void btnSet_Click(object sender, EventArgs e){        Thread t = new Thread(new ParameterizedThreadStart(SetTextBoxValue));    //当然也可以用匿名委托写成