是否有任何情况下最好使用普通的旧 Thread 对象而不是较新的构造之一?

2024-02-15

我在博客文章和此处看到很多人要么避免或建议不要使用Thread最新版本的 C# 中的类(当然我的意思是 4.0+,还添加了Task& 朋友们)。甚至在此之前,关于普通旧线程的功能在许多情况下可以被ThreadPool class.

此外,其他专门机制正在进一步渲染Thread类别不太吸引人,例如Timer取代丑陋的Thread + Sleep组合,而对于 GUI,我们有BackgroundWorker, etc.

尽管如此,Thread对于某些人(包括我自己)来说,这似乎仍然是一个非常熟悉的概念,当遇到涉及某种并行执行的任务时,人们会直接跳到使用好的旧方法Thread班级。最近我一直在想是否是时候改变我的方式了。

所以我的问题是,是否有任何情况下有必要或有用使用普通的旧Thread对象而不是上述结构之一?


Thread 类不能被废弃,因为显然它是一个实施细节你提到的所有其他模式。

但这并不是你真正的问题;而是你的问题。你的问题是

是否有任何情况需要或有用使用普通的旧 Thread 对象而不是上述构造之一?

当然。正是在那些更高级别的构造之一不能满足您的需求的情况下。

我的建议是,如果您发现自己处于现有的更高抽象工具无法满足您的需求的情况,并且您希望使用线程实现解决方案,那么您应该确定您真正需要的缺失的抽象, 进而使用线程实现该抽象, 进而使用抽象.

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

是否有任何情况下最好使用普通的旧 Thread 对象而不是较新的构造之一? 的相关文章

  • 前向声明类型和“已声明为类类型的非类类型”

    我对以下代码有问题 template
  • 当事件button.click发生时,如何获取按钮名称/标签?

    我以编程方式制作按钮并将它们添加到堆栈面板中 以便每次用户导航到页面时按钮都会发生变化 我正在尝试做这样的事情 当我单击创建的按钮时 它将获取按钮的标签并转到正确的页面 但是 我无法使用 RoutedEventHandler 访问按钮元素
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • Task.Run 作为反模式?

    我正在将 SQLite NET PCL 库用于我的 WinRT 项目SQliteAsyncConnection类 它提供经典的异步版本SQLiteConnection方法 然而 就该项目而言Github页面 https github com
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 假装 .NET 字符串是值类型

    在 NET 中 字符串是不可变的 并且是引用类型变量 这通常会让新的 NET 开发人员感到惊讶 因为他们的行为可能会将它们误认为是值类型对象 然而 除了使用实践StringBuilder对于长连接 尤其是 在循环中 在实践中是否有任何理由需
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • 为什么 0.5 mod 0.1 在不同的编程语言中结果不同?

    我有一个关于模数的问题 模运算求一个数除以另一个数的余数 我原本期望 0 5 0 1 0 的结果 但是当我在 PHP 或 net 中运行它时 我得到 0 1 我运行的 php 代码是 var dump fmod 0 5 0 1 在 net中
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • 从共享网络文件夹运行的 .NET 应用程序的性能损失

    从共享网络文件夹运行 NET 4 0 应用程序是否有任何性能损失 我发现哪个应用程序启动速度较慢 但 在使用时没有注意到任何变慢 但不确定 当通过网络运行可执行文件时 Windows 不会在应用程序启动时通过网络传输整个应用程序 这样做是为
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • 如何获取 PostgreSQL 中特定模式的数据库中存储的所有函数的列表?

    我希望能够连接到 PostgreSQL 数据库并找到特定模式的所有函数 我的想法是 我可以对 pg catalog 或 information schema 进行一些查询并获取所有函数的列表 但我无法弄清楚名称和参数的存储位置 我正在寻找一
  • 如何使用 JSCH 连接到 SSH 服务器?

    我正在尝试使用 jsch 连接到我的开放 ssh ubuntu 服务器 我只是想看看是否可以使用 SSH 从 Android 手机连接到 Linux 服务器 但它不起作用 当我在 Android 手机上启动应用程序时 应用程序崩溃了 我已附
  • 如何更改 zend 框架布局中的元标记

    所以我在layout phtml上设置了一些默认元标记 this gt headTitle and this gt headMeta gt appendName 并在layout phtml的标头处得到回显 我的问题是 如何更改视图文件中的
  • SQL Server 2008 中的 USING 关键字是什么?

    我知道 SQL 子句 USING 的美妙用法 它类似于 NATURAL JOIN 但您必须详细说明连接列 您可以更简单 更快 地连接具有相同键和外键的表 并且查询的输出不包含冗余字段 然而 SQL Server 2008 不支持使用 USI
  • Tab 键在 IWebbrowser2 中不起作用

    我正在使用 ActiveX 控件在 ATL 应用程序 IWebbrowser2 中实现嵌入式浏览器 问题是 我无法使用 Tab 键在文本字段之间跳转 按 T ab 键什么也不做 按 Enter 键将按预期提交表单 问题存在 例如在 Face
  • 选择 XML 中的节点

    我正在尝试在 c 中使用 xpath 选择节点 这是我的 XML 文件
  • Struts2注释验证拦截器

    我在将 struts2 jquery plugin 3 6 0 实现到 Struts2 2 3 14 3 网站中时遇到了令人沮丧的时间 我最近将Struts2版本更新到2 3 14 3及其所有依赖项 并且网站功能完全正常 我现在正在尝试更新
  • 如何获取当前运行的实际窗口的标题?

    我有一个问题 我只需要获取列表中所有窗口的标题 我所说的标题是指 记事本 总指挥官 只是窗口顶部边缘显示的文本 到目前为止我已经到了这里 function EnumWindowProc hHwnd HWND lParam integer b
  • 统计机器翻译的短语提取算法

    我用 SMT 的短语提取算法编写了以下代码 GitHub https github com alvations nltk blob develop nltk align phrase based py coding utf 8 def ph
  • 如何从 Scala-Play 应用程序中的 URL 中提取路由变量的值?

    我正在为 Play 框架编写一个模块 在我的模块的一部分中 我有以下代码 abstract class SecurityFiltering extends GlobalSettings override def onRequestRecei
  • iOS画屏视频采集不流畅

    我正在创建一个应用程序 我们可以在 imageView 中使用手指进行绘图 同时我们也可以记录屏幕 到目前为止我已经完成了这些功能 但问题是一旦视频录制完成 如果我们播放录制的视频 手指在视频中绘图不流畅 我没有使用 opengl 绘图在
  • HTML5 画布和线宽

    我正在画布上绘制折线图 线条画得很好 图表是按比例缩放的 每个部分都被绘制 颜色都可以等等 我唯一的问题是视觉上线宽有所不同 它几乎就像书法笔的笔尖 如果笔画向上 则线条较细 如果笔画水平 则线条较粗 我的线条粗细是恒定的 并且我的stro
  • FCM getToken() 不返回任何内容

    我正在尝试将 Firebase Cloud Messaging 与 Angular2 结合使用 但他们似乎不希望我们这样做 Google 我一直在关注this https firebase google com docs cloud mes
  • iis7 asp.net mvc webapi 重写

    我遇到了与参考帖子中相同的问题 由于 ExtensionlessUrlHandler WebAPI 重写规则失败 https stackoverflow com questions 13885343 rewrite rule for web
  • 在 .NET 程序中将图像加载/创建到 SharpDX 中

    我正在尝试使用 SharpDX 使用 DirectX 创建一个简单的类似迷宫的 2D 程序 为此 我想创建可以在屏幕上渲染墙壁 走廊 迷宫外部等的位图 但是 我似乎不知道如何将现有图像文件加载到 Bitmap 类中SharpDX http
  • Google Page Speed-like 图像优化 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我的网站有大约 2 万张产品图片 Google Page Speed 告诉我它们可以优化 这是正确的
  • 在 R 中使用 git2r::clone 进行 SSH 身份验证时获取“不支持的 URL 协议”

    我正在尝试使用 git2r clone 克隆私人存储库via SSH 不是 HTTPS 协议 在 R 中通过执行 git2r clone email protected cdn cgi l email protection team nam
  • 每个替代 Monad 都可以过滤吗?

    集合的范畴包括笛卡尔幺半群和柯笛卡尔幺半群 下面列出了这两种幺半群结构的规范同构类型 type x y Either x y type x y x y data Iso a b Iso fwd a gt b bwd b gt a easso
  • Spark GraphX 聚合求和

    我正在尝试计算 Spark graphx 图中节点值的总和 简而言之 该图是一棵树 顶部节点 根 应将所有子节点及其子节点相加 我的图实际上是一棵树 看起来像这样预期总和值应为 1850 gt VertexID 14 Value 1000
  • 是否有任何情况下最好使用普通的旧 Thread 对象而不是较新的构造之一?

    我在博客文章和此处看到很多人要么避免或建议不要使用Thread最新版本的 C 中的类 当然我的意思是 4 0 还添加了Task 朋友们 甚至在此之前 关于普通旧线程的功能在许多情况下可以被ThreadPool class 此外 其他专门机制