STATHREAD 和主线程

2023-12-19

我不完全理解 STATHREAD 属性的作用http://msdn.microsoft.com/en-us/library/system.stathreadattribute.aspx http://msdn.microsoft.com/en-us/library/system.stathreadattribute.aspx。请看下面的代码:

Imports Project1
Imports System.Threading

Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim t1 As New Thread(AddressOf PersonTest.Test2)
        Dim t2 As New Thread(AddressOf PersonTest.Test2)
        Dim t3 As New Thread(AddressOf PersonTest.Test2)
        t1.Name = "Test1"
        t2.Name = "Test2"
        t3.Name = "Test3"
        t1.Start()
        t2.Start()
        t3.Start()
    End Sub

End Class

该代码显式创建了三个线程,因此总共有四个线程,即主线程、t1、t2 和 t3。

具有一个线程(即主线程)的 Windows 窗体应用程序是否需要 STATHREAD?


STAThread 用于主 UI 线程。

在 Windows 中,单线程单元 (STA) 意味着(简单来说)Windows 消息泵将协作管理 UI。

该属性告诉应用程序为第一个/主 UI 线程有效创建 STA 线程。其他线程实际上与该线程并行运行,它们需要确保当调用 UI 组件时,它们通过 STA 中的消息泵将它们作为消息传递。

现在很多人会说这是 COM 的要求,这是事实。这是因为 COM 的 STA 线程模型的核心使用 Windows 消息泵,并且需要与许多 Windows UI 进行通信。

这里也有很好的答案:为什么所有 Winforms 程序都需要 [STAThread] 属性? https://stackoverflow.com/questions/102437/why-do-all-winforms-programs-require-the-stathread-attribute

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STATHREAD 和主线程 的相关文章

  • 下载需要使用 vb.net/c# 进行身份验证的文件?

    与 CSV 文件类似 可以从以下位置下载http download finance yahoo com d quotes csv s RHT 如何下载需要身份验证的文件 我可以简单地使用 My Computer Network Downlo
  • 在 Visual Basic 中将窗体放置在屏幕右下角

    当表单加载时 如何将表单定位在屏幕的右下角 我正在使用 Visual Basic 2010 Express Thanks 编辑 我这样做了 看起来效果很好 Dim x As Integer Dim y As Integer x Screen
  • 设置表单的背景颜色

    Private Sub HScrollBar1 Scroll ByVal sender As Object ByVal e As ScrollEventArgs Handles HScrollBar1 Scroll Me BackColor
  • 需要从 DCOM 配置中删除对象 (DCOMCNFG)

    我们有一个带有 activex exe 和 com dll 的应用程序 安装后 我们会在 DCOM 配置中创建一个对象 如果我们尝试从 DCOM 配置中删除该对象 它就会关闭 直到我们再次重新打开它 想知道是否有任何程序可以从 DCOM 及
  • 插入具有只读主键列的表

    我正在使用一个使用 sql server 数据库的应用程序 我试图在表中插入一行 如下所示 该表有一个主键 prodNum 这是自动生成的密钥 当我尝试向表中插入一行时 如下所示 在行中intResult oSglProdTableAdap
  • 有没有更简单的方法来处理复选框?

    在 vb net 中 我有一个包含一组四个复选框的表单 每个复选框都表示 选中时 用户想要向其订单添加特殊指令 代码如下所示 If SpecialInstruction1CheckBox Checked Then AddSpecialIns
  • VB.NET 中的 TextChanged 事件

    我有两个基本文本框 比方说 A 和 B 我希望在一个文本框中输入内容以清除另一个文本框中的任何输入 例如 在 A 中键入 123 现在在 B 中键入 456 B 应包含 456 A 应为空 但是 我在 B 中收到 56 而 A 为空 似乎
  • 需要将用户名和密码添加到 VB.NET Web 服务客户端中的 SOAP 标头

    我需要查询一个进行基本身份验证的 Web 服务 将用户名和密码放在请求标头中 我的客户端是用 VB NET Visual Basic Express Edition 2010 编写的 我已将 Web 服务添加到服务引用中 它为我自动生成了合
  • ODP.Net - OracleDataReader.读取速度非常慢

    我在 ODP Net 中的 OracleDataReader 方面遇到很多麻烦 基本上 我有一个参数化查询 需要 1 5 秒的时间来运行 返回大约 450 条记录 然后需要 60 90 秒的时间来循环 甚至没有代码在循环中运行 实际上是迭代
  • 使用 DirectCast、CType、TryCast 转换数据类型

    自从我在 2005 年从 VB6 迁移到 VB NET 以来 我一直在使用 CType 将一种数据类型转换为另一种数据类型 我这样做是因为它打字速度更快 以前存在于 VB6 中 而且我不知道为什么我必须使用 DirectCast 如果它们之
  • 创建 Visual Studio 风格的选项/设置对话框

    我目前正在改进 winforms 应用程序的选项对话框 目前我正在使用选项卡控件 我想为类似于 Visual Studio 的设置创建一个表单 对话框 这是怎么做到的 我可以在左侧看到类似树视图的控件 但是他们使用什么控件来显示每个选项页面
  • 如何在VB.NET中从另一个窗体打开一个窗体?

    我认为这很容易 我没有经常使用 VB NET 我正在尝试通过单击按钮打开一个表单 表单不会显示 并且我收到空异常错误 代码有什么问题吗 Private Sub Button3 Click sender As System Object e
  • 以编程方式设置 IIS 6.0 的服务器绑定

    我正在尝试设置安装程序来注册网站 目前 我已经在 Windows Server 2003 下创建了应用程序池和网站 不幸的是 每当我尝试修改 ServerBindings 属性来设置 IP 地址时 它都会向我抛出异常 我第一次尝试这个是因为
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 如何隐藏数据列表中的项目

    我想隐藏一个项目datalist根据某种条件起诉ItemBound how Wrap a PlaceHolder控制整个内容ItemTemplate 然后在 ItemDataBound 事件中 您可以执行以下操作 Protected Sub
  • VB.net 应用程序保留以前的版本

    我有一个正在发布的 Visual Basic 项目 并且每次都会增加版本号 当我安装新版本时 它会打开 但一旦应用程序重新启动 它似乎就会恢复到以前的版本 我不知道为什么 尝试更新发布应用程序时所需的最低版本 转到应用程序属性 gt 发布
  • 这段代码有什么问题。如果用户选择或不选择复选框,为什么它仍然显示 MsgBox? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 无论我是否选择复选框 它仍然会给出
  • 将集合项复制到 .NET 中的另一个集合

    在 NET VB 中 如何获取一个集合中的所有项目 并将它们添加到第二个集合中 而不丢失第二个集合中预先存在的项目 我正在寻找比这更有效的东西 For Each item As Host In hostCollection1 hostCol
  • VB.NET - 类中的扩展函数?

    我正在尝试创建一个类库 其中包含将二进制整数转换为十进制的函数 反之亦然 这样我就可以将其导入到另一个项目中 而无需重写该函数 它工作得很好 这是课程的一部分 Public Class BinaryDenary Public Shared
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows

随机推荐

  • 如何在 swift 中使用 CLLocationManager 获取位置用户?

    我的视图控制器上有这段代码 但这不起作用 import UIKit import CoreLocation class ViewController UIViewController CLLocationManagerDelegate va
  • 像 Facebook 聊天系统一样向上滚动加载数据[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在开发一个聊天系统 我需要在向上滚动功能上显示聊天历史记录 例如 Facebook 聊天系统 有谁能够帮助我 事情会是这样的 HT
  • 自动或定期备份mysql数据

    我想使用 plain php 我第二喜欢的语言定期备份 mysql 数据库中的一些表 我希望它是自动化的 以便以后可以在出现问题时恢复备份 我尝试执行查询并将结果保存到文件中 最终得到的代码看起来有点像这样 sql SELECT FROM
  • 绘制特定行的每个列值

    我正在努力从数据框中绘制特定行 下面是我试图绘制的图表 我尝试过使用 ggplot 和普通图 但我无法弄清楚 Wt2 Wt3 Wt4 Wt5 Lngth2 Lngth3 Lngth4 Lngth5 1 48 59 95 82 141 157
  • PIL和cv2中不同的像素信息

    我已经使用两者加载了相同的图像PIL and cv2 但是对于相同的索引 像素信息是不同的 这是我的代码 import cv2 from PIL import Image img cv2 imread Fruits1 jpg Can be
  • 如何更改 Bootstrap 的轮播过渡从幻灯片到淡入淡出

    我在更改 AngularUi 的转换时遇到了一个小问题点击这里 http angular ui github io bootstrap 轮播过渡 我想将轮播的标准滑动过渡更改为fadeIn FadeOut过渡点击这里 http plnkr
  • 加载布局时出现异常:java.util.LinkedHashMap.eldest()Ljava/util/Map$Entry;

    尝试在图形编辑视图中加载特定布局文件时 出现以下异常 这是我下载最新版本后开始的ADT Version 20 and SDK API Level 16 java lang NoSuchMethodError java util Linked
  • Riverpod FutureProvider 在添加 .family 修饰符后将继续触发

    所以我未来有这样的提供者 final additionalCostsProvider FutureProvider autoDispose family
  • 在排序的 pandas 数据框中按时间戳搜索元素

    我有一个非常大的熊猫数据框 系列 包含数百万个元素 我需要找到时间戳小于 t0 的所有元素 所以通常我会做的是 selected df df df index lt t0 这需要很长时间 据我了解 当 pandas 搜索时 它会遍历数据帧的
  • 移动电话 - 它可以通过无线电频率进行编程广播吗?

    是否有可能让手机以特定频率发射任意无线电波 或者移动操作系统只允许更高级别的访问 如果答案是 否 正如我所期望的那样 有没有办法让手机与另一个电子设备远程通话 而无需握手等 可能不会 正如 EFraim 指出的那样 将会有适当的监管框架规定
  • 以有限优先级启动子进程

    我正在寻找一种如何使用 Python 启动进程的方法subprocess系统优先级较低的模块 我已经发现 解决方案Unix https stackoverflow com questions 2463533 is it possible t
  • Ansible:如何将文件远程复制到远程

    我需要复制文件 etc resolv conf从远程主机并将其复制到多个远程主机上 my hosts Ansible ubuntu1 4 我想从以下位置复制此文件ubuntu1 to ubuntu2 ubuntu3 and ubuntu4我
  • Rails:在请求范围内共享信息

    Rails 中在当前请求范围内共享信息的机制是什么 熟悉 Asp Net 的人会知道 有一个 HttpContext 可用于请求期间调用的所有实体 Rails 中有类似的东西吗 With around filter and Thread c
  • Javascript数组非未定义元素计数

    我创建一个数组let arr new Array 99999 但我没有把它填满arr length这是99999 我怎么知道有多少实际的 非undefined这个数组中有元素吗 有没有比寻找第一个更好的方法undefined 你可以使用Ar
  • Google Calendar API 返回 invalid_grant 和错误请求

    在我的开发环境中 我有一个用户刚刚收到以下范围的 OAuth 令牌 https www googleapis com auth calendar https www googleapis com auth calendar https ww
  • 集成测试私有类和方法

    对于单元测试 您不应该测试私有方法 是的 但是对于集成测试 使用 MSTest 或 NUnit 等单元测试框架 我非常希望针对测试 url 运行内部 API 调用 以确保当前代码当第三方 API 供应商更改其后端时有效 考虑到系统的复杂性
  • 替代 sql server 2008 中的 First_Value()

    我有以下查询 它在 Oracle 和 DB2 中运行良好 但它在 SQL Server 2008 中不起作用 因为 First Value 函数不可用于相同的 2008年有解决办法吗 select NameGuid Name Ancesto
  • 如何选择 select2 JavaScript 多选中的所有选项

    有一天 我试图弄清楚如何选择 select2 v3 5 1 JavaScript 多选控件中的所有项目 我尝试了一些事情 但我很难弄清楚如何去做 我只想选择框中的每个选项 但显然 select2 没有内置选项来为您选择所有项目 对于 sel
  • 使用 MVC 的多表模型?

    我刚刚开始使用 MVC 一旦我设法将想法转向它 这似乎将是一个很好的方法 我遇到的大多数材料似乎在模型 视图和表之间具有 1 1 的关系 即每个模型代表一个表并允许 CRUD 以及更复杂的功能 如果我有一个允许帐户创建和更新的帐户模型怎么办
  • STATHREAD 和主线程

    我不完全理解 STATHREAD 属性的作用http msdn microsoft com en us library system stathreadattribute aspx http msdn microsoft com en us