如何在 C# 中停止线程?

2023-12-25

我创建了一个客户端-服务器应用程序,在服务器上我希望有机会停止服务器然后再次启动它。问题是我无法停止侦听 Tcp 连接的线程。

如何在 C# 中关闭线程?

Thanks.

private void KeepServer(){
    while (this.connected)
    {
         tcpClient = tls.AcceptTcpClient();
         Connection newConnection = new Connection(tcpClient);
    }
}

一般来说,您应该通过指示您希望它们停止并让它们这样做来“停止”线程。建议您don't use Thread.Abort除非您要关闭整个应用程序的紧急情况。 (呼叫Thread.Abort在当前执行的线程上更安全,但通常仍然令人讨厌。顺便说一句,这就是 ASP.NET 在重定向时所做的事情。)

我有一个关于优雅地停止线程的页面 http://www.yoda.arachsys.com/csharp/threads/shutdown.shtml。当然,您不必使用确切的代码 - 但设置标志并定期测试它的模式是要点。

现在,如何将其应用于您的特定情况将取决于您如何侦听 TCP 连接。如果您可以发布该线程使用的代码,我们也许能够对其进行适当的调整。

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

如何在 C# 中停止线程? 的相关文章

  • 以编程方式读取 SQL Server 查询计划建议的 SQL 特定执行的索引?

    如果我在 SSMS 中运行此命令 set showplan xml on GO exec some procedure arg1 arg2 arg3 GO set showplan xml off GO 我获得查询执行中涉及的完整调用堆栈的
  • ComboBox DataBinding 导致 ArgumentException

    我的几个类对象 class Person public string Name get set public string Sex get set public int Age get set public override string
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • 如何使用 Castle Windsor 将对象注入到 WCF IErrorHandler 实现中?

    我正在使用 WCF 开发一组服务 该应用程序正在使用 Castle Windsor 进行依赖注入 我添加了一个IErrorHandler通过属性添加到服务的实现 到目前为止一切正常 这IErrorHandler对象 一个名为FaultHan
  • 从客户端访问 DomainService 中的自定义对象

    我正在使用域服务从 Silverlight 客户端的数据库中获取数据 在DomainService1 cs中 我添加了以下内容 EnableClientAccess public class Product public int produ
  • 对 std::vector 进行排序但忽略某个数字

    我有一个std vector
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • 启动时的 Excel 加载项

    我正在使用 Visual C 创建 Microsoft Excel 的加载项 当我第一次创建解决方案时 它包含一个名为 ThisAddIn Startup 的函数 我在这个函数中添加了以下代码 private void ThisAddIn
  • 在 NaN 情况下 to_string() 可以返回什么

    我使用 VS 2012 遇到了非常令人恼火的行为 有时我的浮点数是 NaN auto dbgHelp std to string myFloat dbgHelp最终包含5008角色 你不能发明这个东西 其中大部分为0 最终结果是 0 INF
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • C++ int 前面加 0 会改变整个值

    我有一个非常奇怪的问题 如果我像这样声明一个 int int time 0110 然后将其显示到控制台返回的值为72 但是当我删除前面的 0 时int time 110 然后控制台显示110正如预期的那样 我想知道两件事 首先 为什么它在
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • 打印大型 WPF 用户控件

    我有一个巨大的数据 我想使用 WPF 打印 我发现WPF提供了一个PrintDialog PrintVisual用于打印派生的任何 WPF 控件的方法Visual class PrintVisual只会打印一页 因此我需要缩放控件以适合页面
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • String.Empty 与 "" [重复]

    这个问题在这里已经有答案了 可能的重复 String Empty 和 有什么区别 https stackoverflow com questions 151472 what is the difference between string
  • 中断连接套接字

    我有一个 GUI 其中包含要连接的服务器列表 如果用户单击服务器 则会连接到该服务器 如果用户单击第二个服务器 它将断开第一个服务器的连接并连接到第二个服务器 每个新连接都在一个新线程中运行 以便程序可以执行其他任务 但是 如果用户在第一个
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str

随机推荐

  • 当 n 可能为零时,如何对(在 Python 中)“除最后 n 项之外的所有项”进行切片? [复制]

    这个问题在这里已经有答案了 我有一个 Python 项目列表 我需要获取 除最后 N 之外的所有项目 当 N 为零 在这种情况下我想要整个列表 以及当 N 大于或等于列表的长度 在这种情况下我想要一个空列表 时 它需要工作 这在大多数情况下
  • 使用 PGP/MIME 签署多部分邮件

    我正在尝试在 php 中使用 PGP 签署邮件 我可以使边界和标头正常工作 但邮件签名无效 如 Thunderbirds Enigmail 所述 我想问的是 签字的部分是什么 签字时要注意什么 目前生成的邮件的来源如下所示 文本和签名被占位
  • 如何在SqlAlchemy中更新所有行的一列数据?

    对于单条记录更新 我尝试了以下代码并且它有效 uid 1 info Info query filter by id uid first info sold status 1 db session add info db session co
  • Android Q(API 级别 29)不会加载 HTTPS 网站。给出错误:(net::ERR_ACCESS_DENIED) [重复]

    这个问题在这里已经有答案了 我正在尝试修复一个issue https stackoverflow com questions 58899869 webpage not available webview android 58900009 5
  • 教义如何使用ANY_VALUE mysql函数

    自 mysql 5 7 5 起 group by 发生了变化 https dev mysql com doc refman 5 7 en group by handling html https dev mysql com doc refm
  • 通过 HTML5 本地存储实现同步原语

    考虑这样一种情况 浏览器有两个或多个选项卡指向同一源 不同选项卡的不同事件循环可能会在访问本地存储时导致竞争条件 并且不同选项卡可能会覆盖本地存储中彼此的更改 我正在编写一个将面临此类竞争条件的 Web 应用程序 因此我想了解在这种情况下可
  • 有没有办法在 Go 项目上为导入提供可重用的路径?

    我对 Go 很陌生 需要一些帮助来使导入路径在我的团队之间更容易分配 目前 在我的一个 Go 文件的顶部 我有一个导入 例如 github teamName com teamMemberA HeartThrob c 我将他的项目分叉为我自己
  • 将字符串分离到 r 中的列表中

    我在 R 中有一个字符串 如下所示 PP BGH AC ETL D 我想将其转换为列表 以便 List 1 PP List 2 BGH List N D 如果有逗号 你可以执行 strsplit 但我想保留括号而不是删除它们 不知道如何在
  • 基于上下文的 Rails 3 路由

    我正在尝试实现一个类似于 GitHub 使用的 上下文 系统 例如 可以创建属于用户或用户所属的公司之一的帖子 具体取决于用户是在 用户 上下文中还是在引用公司之一的上下文中 作为其中的一部分 我希望能够根据用户当前的上下文进行路由 例如
  • 集成了蓝铜矿的 Visual Studio 2022 (v3.14.1) 在创建本地 blob 容器时给出错误消息 InvalidHeaderValue

    这是抛出的错误 Headers Server Azurite Blob 3 14 1 x ms error code InvalidHeaderValue x ms request id a3aca2f1 c0af 4af5 a54c d7
  • 有没有办法以编程方式从 Cocoa 连接到远程服务器?

    是否有 Cocoa objC API 调用来模仿 Finder 中的 连接到服务器 操作 Automator 可以做到这一点 所以 Finder 似乎在某个地方有一个钩子 原来有一个旧的 Carbon 函数 找不到 Cocoa 的等价函数
  • 抽象方法错误

    我正在 netbeans 中开发一个项目 当我使用 glassfish 3 1 2 启动它时 一切正常 但是当我调用映射到以下方法的 invite url 时 RequestMapping value invite method Reque
  • 如何判断一个点是否在3个点的外接圆内?

    有什么简单的解决办法吗 或者有人有实施的例子吗 谢谢 乔纳斯 我们打电话吧 a b c 我们的三点 C a b c 的外接圆 还有一点 确定 d 是否在 C 中的快速方法是计算行列式 ax dx ay dy ax dx ay dy det
  • 我可以在显示之前获得正确的 JComponent 大小吗?

    JComponent 的大小何时计算 在屏幕上显示之后还是之前 如果我发送 getSize 之前留言 setVisible true 它会给我right回答 谢谢 例如 我有时会在调试时检查组件的大小 以找出为什么我看不到它们 在大多数情况
  • PHP readfile 返回零长度文件

    This is weird 我有一个脚本 可以通过浏览器将本地 zip 文件发送给用户 到目前为止 该脚本运行良好 没有出现任何问题 今天 我的同事通知我该脚本正在发送零长度文件 一些背景信息 脚本出错之前服务器设置没有被修改过 测试了不同
  • 如何将文件从远程复制到主机ansible?

    我正在尝试将文件从远程主机复制到运行 Ansible playbook 的本地服务器 虽然任务总是成功执行 但文件从未复制到本地服务器 这是代码 file path vm info config mode 0777 fetch src vm
  • 通过 objectID 获取 NSManagedObjects 数组返回空数组

    我正在尝试使用从单独的上下文中收集的对象 ID 数组来执行提取操作 以从上下文中检索托管对象 然而 提取返回一个空数组 来自 核心数据编程指南 的 检索特定对象 部分link https developer apple com librar
  • 如何求列表中两个元素的最大乘积?

    我在 hackerrank 竞赛中尝试一个问题来取乐 然后出现了这个问题 我为此使用了itertools 代码如下 import itertools l for in range int input l append int input m
  • 片段事务上的片段重复

    好的 每当我尝试替换应用程序中的片段时 它只会将片段添加到另一个片段所在的容器内 并保留当前片段 我尝试调用替换并引用包含片段的视图 并引用片段本身 这些都不起作用 我可以使用片段事务管理器将片段添加到视图中 但即使我在添加后尝试将其删除
  • 如何在 C# 中停止线程?

    我创建了一个客户端 服务器应用程序 在服务器上我希望有机会停止服务器然后再次启动它 问题是我无法停止侦听 Tcp 连接的线程 如何在 C 中关闭线程 Thanks private void KeepServer while this con