正文
vb.net委托与多线程 vb60 多线程
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
请教VB.net中怎么跨线程调用控件.
要使用用户控件的实例成员,就先创建一个用户控件的实例,再通过实例名.实例成员名访问;要使用用户控件的共享(Shared)成员,通过用户控件类名.共享成员名访问。
建议你使用BackGroundWorker控件。将代码写入控件的事件中,使用它的Start方法就可以开始工作了。是与主程序同时进行的。
new EventArgs())引发事件 ButtonClick.Invoke(me, new EventArgs())另外 RaiseEvent 也可以引发事件,但不能使用 RaiseEvent 来引发派生窗体的控件事件,只有自己定义的类的事件才能用它引发。如满意,请采纳,谢谢。
delUserFromUserList);this.Invoke(handler } else { //这里写真正要处理的动作 //以前弄过,具体不记得了。或者你在主线程里面创建这个控件,只是在其他线程里面用这个方法是用这个控件,vb.net委托与多线程我记得好像vb.net委托与多线程我是这样做的。
求教VB.net多线程问题
1、你可以在timer前用if判断网络状态,如断开,可用 threading.Thread.Sleep(10000) ‘当前线程挂起10秒 ’可以开一个新线程去读取脱机数据。如连接,则继续执行。
2、简单实现的话可以试试BackgroundWorker控件来做比较简单。
3、多线程就是这样的。界面线程是主线程,你这个Form_Load就是运行在主线程上的线程,而Thread1,Thread2是由主线程启动的。这个启动不是线性的。主线程只是通知系统,请启动一个线程运行某某函数。
同Java一样简单!VB.NET多线程开发实例
1、多线程一般是不推荐用的vb.net委托与多线程,因为线程之间如果有共享资源的话会引起竞争,需要加锁处理vb.net委托与多线程;而且线程间没有时序关系,所以你在调试中可能会出现异步处理结束顺序与开始处理顺序不一致的情况(vb.net委托与多线程我在调试中已经发现该问题)。
2、ListBox操作需要用Invoke。另外多线程方式并不是并行处理。建议采用.net framework 4 带的并行处理循环操作,若不是0版本的framework,可以使用Aforge的并行库比较方便。
3、VB .NET 是较早出现的一种开发语言,因为它控件的操作简单而为很多人使用,但是因为它功能的局限性和开发大型软件效率比较低,所以现在用的人越来越少。
4、多线程 多线程的使用可以带来更好的交互响应和实时行为。多线程的简单性是Java成为主流服务器端开发语言的主要原因之一。
5、C#被大力宣传为微软对付JAVA的王牌,受到媒体极力关注。然而VB.NET(有时被称为VB7)影响面不广,这导致VB社区之外很少人关注它。
6、简单实现的话可以试试BackgroundWorker控件来做比较简单。
关于VB.NET中多线程和委托界面假死无响应的问题
1、所以你的图片的处理函数实际上是在主线程中运行的,新线程等于没用 正确的作法是,T定义为SomeSub这个函数为入口的线程,并启动它 在界面进度条更改的时候再使用Invoke来调用委托来进行界面更改。
2、感觉问题出在 FormShow() 启动倒计时显示窗口 这一句上。这一句应该只需要执行一次就行了。把它放在timer中,多次调用,造成假死。
3、那么你必须给“卡死”做出准确的定义。什么是卡死?30秒没有响应就是卡死?那么“没有响应”的定义又是什么?你给出这些条件以后,杀掉一个线程就不难。Abort方法,Dispose方法,都可以。
4、Object, e As EventArgs) Handles ButtonClickIf SerialPortIsOpen ThenSerialPortDiscardInBuffer() 清除数据接收区SerialPortDiscardOutBuffer() 清除数据发送区End IfTextBoxClear()‘清屏。
5、在处理过程中没几个循环执行一次DoEvents语句,可以让窗体有响应,但会让处理速度变慢,这是最简单的办法。
6、DoEvents语句用的太多了,每次循环都会刷新,这跟不上计算的速度,比如说可以每100次循环执行一次DoEvents。
vb.net两段程序多线程运行问题
1、简单实现的话可以试试BackgroundWorker控件来做比较简单。
2、多线程就是这样的。界面线程是主线程,你这个Form_Load就是运行在主线程上的线程,而Thread1,Thread2是由主线程启动的。这个启动不是线性的。主线程只是通知系统,请启动一个线程运行某某函数。
3、.net 为了安全,默认不允许跨线程访问操作控件。只能谁创建了控件,谁操作。这个textbox只能从主线程访问。解决方案一般有两个 使用委托机制。
4、sub aaa()调用如下:Dim mythread As New System.Threading.Thread(AddressOf aaa)mythread.Start()这样就是定义一个线程,名字叫 mythread,这个线程会运行aaa这个过程。start 就是让线程运行。
5、用 t.Suspend() 这个是挂起线程。是一个异步方法。t.Sleep 我看了是一个同步方法。要等这个方法运行完了才继续下一步。这和from.show和 from.showdiaglog区别差不多!至于疑问2我也没找到原因。
6、所以你的图片的处理函数实际上是在主线程中运行的,新线程等于没用 正确的作法是,T定义为SomeSub这个函数为入口的线程,并启动它 在界面进度条更改的时候再使用Invoke来调用委托来进行界面更改。
VB.net可以多线程控制同一个窗体及其控件吗
简单回答:当前来说,编程与运行环境合适vb.net委托与多线程的情况下,VB.net与VB都有实现多线程的可能。VB、VB.net的最基本的概念,是调用系统的接口进行编程,只要系统提供“多线程”的功能调用,它们就能实现多线程。
方法 1 : CreateThread 不用多说,万变不离其宗,这是 Win32 内创建线程的唯一系统方法,以下介绍的多线程创建方式虽然不直接接触这个 Win32 APi,但系统也是通过vb.net委托与多线程他创建的。
目测是 SetParent() 的锅,你把这句注释了,用 ShowDialog() 应该就能符合你的要求了。
简单实现的话可以试试BackgroundWorker控件来做比较简单。
关于vb.net委托与多线程和vb60 多线程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。