首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从两个连接多线程访问UI线程控件

从两个连接多线程访问UI线程控件
EN

Stack Overflow用户
提问于 2016-03-13 21:44:07
回答 1查看 144关注 0票数 1

我目前正在为我的公司做一个小型的自动更新项目。在对多线程进行了一些研究之后,我成功地构建了以下代码:

线程#01 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Private Sub startUpdate()
    If InvokeRequired Then
        Invoke(New FTPDelegate(AddressOf startUpdate))
    Else
        'some code here
    End If
End Sub

线程#02,由线程#01连接:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Private Sub startProcess()
    myThread = New Thread(Sub() startUpdate())
    myThread.Start()
    myThread.Join()

    'another code goes here

    Me.close
End Sub

当表单加载时访问线程#02:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Private Sub SUpdater_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    myThread1 = New Thread(Sub() startProcess())
    myThread1.Start()
End Sub

有两件事我被困住了:

  • 我无法从#01线程访问Me.close。它会触发一个错误:控件位于另一个线程中。
  • 即使我调用了另一个线程,主表单仍然僵住了。

请帮我改正这个错误。

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-14 08:37:50

每次访问UI元素时都需要调用。调用Me.Close()将开始释放表单的所有元素(组件、按钮、标签、文本框等),从而导致与表单本身以及表单中的所有内容的交互。

惟一不需要调用的是您知道在获取或设置时不会修改UI中任何内容的属性,以及字段(也称为变量)。

例如,不需要调用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dim x As Integer = 3

Private Sub Thread1()
    x += 8
End Sub

要解决问题,只需调用表单的闭包即可。这可以简单地使用委托来完成。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Delegate Sub CloseDelegate()

Private Sub Thread1()
    If Me.InvokeRequired = True Then 'Always check this property, if invocation is not required there's no meaning doing so.
        Me.Invoke(New CloseDelegate(AddressOf Me.Close))
    Else
        Me.Close() 'If invocation is not required.
    End If
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35980288

复制
相关文章
iOS表视图单元格高度自适应
iOS表视图高度自适应可以节省很多麻烦,尤其是涉及到复杂的业务逻辑时,今天尝试了使用Masonry和FDTemplatelayoutCell来布局表视图单元格,从而达到单元格高度自适应的效果,这里就总
梧雨北辰
2018/04/24
1.8K0
iOS表视图单元格高度自适应
如何在 Bash 中将字符串计算为数字?
当您尝试在 bash 中进行算术运算时,这会产生问题,您尝试添加的数字会给您带来奇怪的结果。
网络技术联盟站
2022/04/21
1.5K0
如何在 Bash 中将字符串计算为数字?
iOS 系统中的视图动画
动画为用户界面的状态转换提供了流畅的可视化效果, 在 iOS 中大量使用了动画效果, 包括改变视图位置、 大小、 从可视化树中删除视图, 隐藏视图等。 你可以考虑用动画效果给用户提供反馈或者用来实现有趣的特效。
beginor
2020/08/10
2.2K0
iOS开发之表视图爱上CoreData
  在接触到CoreData时,感觉就是苹果封装的一个ORM。CoreData负责在Model的实体和sqllite建立关联,数据模型的实体类就相当于Java中的JavaBean, 而CoreData的功能和JavaEE中的Hibernate的功能类似,最基本是两者都有通过对实体的操作来实现对数据库的CURD操作。CoreData中的上下文(managedObjectContext)就相当于Hibernate中的session对象, CoreData中的save操作就和Hibernate中的commit,还
lizelu
2018/01/11
2.2K0
iOS开发之表视图爱上CoreData
如何在 Python 中将对象打印为字符串?
在 Python 编程中,有时我们需要将对象转换为字符串格式,以便于打印输出、日志记录或数据存储等操作。Python 提供了多种方法来将对象转换为字符串。本文将详细介绍在 Python 中将对象打印为字符串的几种常用方法,并提供示例代码帮助你理解和应用这些方法。
网络技术联盟站
2023/06/07
1.7K0
[译]《iOS Human Interface Guidelines》——Table View表视图
API NOTE 查看Table View Programming Guide for iOS和UITableView来学习更多关于在你的代码中定义表视图的内容。
Cloudox
2021/11/23
2.4K0
[译]《iOS Human Interface Guidelines》——Table View表视图
iOS 中获取某个视图的截图
最近在做SDK的截图,想触发类似系统的截屏功能,找了一圈,总结一下靠谱的几种方式。 我写了个UIView 的category,将这几种方式封装和简化了一下。
Haley_Wong
2018/08/22
3K0
iOS中将颜色转为图片
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/54913804
用户1451823
2018/09/13
9850
MySQL单表查询详细解析
  3,group by:将取出的一条条数据进行分组,如果没有group by,则整体作为一组
星哥玩云
2022/08/17
2.6K0
【iOS7一些总结】9、与列表显示(在):列表显示UITableView
列表显示,顾名思义它是在一个列表视图的形式显示在屏幕上的数据的内容。于ios在列表视图UITableView达到。这个类在实际应用中频繁,是很easy理解。这里将UITableView的主要使用方法总结一下以备查。
全栈程序员站长
2022/07/06
1.9K0
【iOS7一些总结】9、与列表显示(在):列表显示UITableView
如何在Linux 的 Vim 中将缩进宽度设置为 2 或 4 个空格?
在您的 vimrc 文件(位于 ~/.vimrc)中,添加以下行以在 Vim 中自动使用 2 个空格而不是制表符。
网络技术联盟站
2022/06/12
6.9K0
如何在Linux 的 Vim 中将缩进宽度设置为 2 或 4 个空格?
Android中的视图焦点Focus的详细介绍
在非触摸屏设备中接收事件和处理响应的控件是具有焦点(Focused)的控件。一个窗口中一个时间内只能有一个具有焦点的控件。在早期具有滚轮设备的android系统中以及现在的智能TV电视应用中视图的焦点控制就非常重要了。而在触摸设备上通常默认情况下只有EditText控件才具有焦点,而我们通常会遇到的一个问题就是当进入一个具有EditText的界面时键盘就会自动弹出,而且有时候可能无法消失,但需求可能是进入时不弹出键盘。而这些所有的东西都是和视图的焦点有关,因此本文的重点就是介绍视图的焦点属性和方法,get到这些技术点后你就可以完全控制和使用这些特性了。
欧阳大哥2013
2018/08/22
2.6K0
如何在IOS上发布APP详细教程
企业相关文字信息(英文):包括名称、注册地址、固定电话、网址、统一社会信用代码、营业执照扫描件等。
iOS程序应用
2023/04/13
9300
iOS中将图片保存到自定义相册中
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/53412675
用户1451823
2018/09/13
1.2K0
Python中将图像切分为小的patch
假如有张1000x1000的图像,我们要将它切成20x20的小patch,该怎么处理呢? 最简单的方法就是采用两重for循环,每次计算小patch对应的下标,在原图上进行crop:
王云峰
2023/10/23
4810
ASP.NET Core 5.0 MVC中的视图分类及使用——布局视图、启动视图、导入视图、详细视图、分部视图
我们可以在这个页面,添加一些全局性的内容,比如全局变量等,然后在具体View页面使用这些变量值
明志德道
2023/10/21
4030
ASP.NET Core 5.0 MVC中的视图分类及使用——布局视图、启动视图、导入视图、详细视图、分部视图
在Swift中创建可缩放的图像视图
没有什么比完美的图片更能让你的应用程序熠熠生辉,但如果你想让你的应用程序用户真正参与并与图片互动呢?也许他们想放大、平移、掌握这些图像?
玖柒的小窝
2021/11/05
5.7K0
2.4 PE结构:节表详细解析
节表(Section Table)是Windows PE/COFF格式的可执行文件中一个非常重要的数据结构,它记录了各个代码段、数据段、资源段、重定向表等在文件中的位置和大小信息,是操作系统加载文件时根据节表来进行各个段的映射和初始化的重要依据。节表中的每个记录则被称为IMAGE_SECTION_HEADER,它记录了一个段的各种属性信息和在文件中的位置和大小等信息,一个文件可以由多个IMAGE_SECTION_HEADER构成。
微软技术分享
2023/10/11
3890
2.4 PE结构:节表详细解析
2.6 PE结构:导出表详细解析
导出表(Export Table)是Windows可执行文件中的一个结构,记录了可执行文件中某些函数或变量的名称和地址,这些名称和地址可以供其他程序调用或使用。当PE文件执行时Windows装载器将文件装入内存并将导入表中登记的DLL文件一并装入,再根据DLL文件中函数的导出信息对可执行文件的导入表(IAT)进行修正。
微软技术分享
2023/10/11
2380
2.6 PE结构:导出表详细解析
点击加载更多

相似问题

iOS如何从表视图单元格中的解析下载图像

10

在表视图单元格iOS中将值设置为UILabels

12

如何在Iphone中将csv文件解析为表视图?

22

表视图单元格图像中的ios故障

35

如何在iOS中从详细视图访问主页的表视图

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文