求助 线程为什么会被自动销毁?

adam_gin 2019-05-16 11:39:21
用一个线程循环去读一些信息,然后把符合条件的信息通过事件反馈出去,但是这个线程每次跑个两次就消失了,从任务管理器里看线程数少了一个,断点循环位置也进不去了

Task.Factory.StartNew(GetValue);

void GetValue()
{
while (true)
{
Thread.Sleep(200);
try
{
var status = tcpNet.ReadInt16("3").Content;
if (status == (short)1)
{
float weightValue = tcpNet.ReadFloat("0").Content;
if (weightValue == _lastValue)
{
return;
}
ReverseWeightEvent?.Invoke(weightValue);
_lastValue = weightValue;
}
}
catch (Exception e)
{
throw new Exception(e.Message);
}

}
...全文
268 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2019-05-16
  • 打赏
  • 举报
回复
查看下windows日志,追究下具体原因
正怒月神 2019-05-16
  • 打赏
  • 举报
回复
你的线程出现异常了。 这个时候,你检查一下数据
wanghui0380 2019-05-16
  • 打赏
  • 举报
回复
throw new Exception(e.Message); 对啊,你自己抛异常了,线程异常就自退啊,很正常啊
wanghui0380 2019-05-16
  • 打赏
  • 举报
回复
引用 7 楼 adam_gin 的回复:
[quote=引用 1 楼 wanghui0380 的回复:] throw new Exception(e.Message); 对啊,你自己抛异常了,线程异常就自退啊,很正常啊
问题是没有抛出异常[/quote] 线程异常不会有提示的,他会自己退的。比如你用vs调试,你啥异常都没看到,但是vs的输出会输出给你一堆“xxxx线程退出”(当然这里的提示只是说是退出,可能是正常完成退出,也可能是异常退出)
adam_gin 2019-05-16
  • 打赏
  • 举报
回复
引用 1 楼 wanghui0380 的回复:
throw new Exception(e.Message);

对啊,你自己抛异常了,线程异常就自退啊,很正常啊


问题是没有抛出异常
沉默老曹 2019-05-16
  • 打赏
  • 举报
回复
添加打印日志,推荐log4net,把成功和失败的日志都打出来,可以清晰的看出问题出现在哪里……
weixin_35107932 2019-05-16
  • 打赏
  • 举报
回复
首先你要了解C#的线程机制,以及线程工作模式,C#中,线程也是一种对象,这种对象也是具有各种形态的,GC在管理这些资源的时候,会预测将来的形态,从伊甸园态到幼年态,从幼年态到年轻态,从年轻态到老年态,从老年态到死亡态,这些状态的改变要根据你使用情况来把握的。并且还需要了解同步异步阻塞非阻塞的模式才能完成整个线程的使用。
  • 打赏
  • 举报
回复
使用CancellationToken 对象能更好的控制线程的退出。并且此时的线程并未销毁,它的销毁由thread pool 去控制,每个线程会再使用完毕之后休眠一段时间,不再使用就会销毁。 任务管理器中的线程并不能代表“真实”的线程数。
vf6.0,要考二级没系统的下哈 Microsoft Visual FoxPro 6.0 for Windows 的常见问题 这些是有关 Microsoft Visual FoxPro 最常见的问题。在您求助 Microsoft 产品支持服务之前,请先查阅这张列表。 若想打印这些附注,请从“文件”菜单中选择“打印”命令。此文档分为以下四部分: --------------------------------------------------------------------- 部分 1. 技术支持与市场 部分 2. Visual FoxPro 6.0 新增功能 部分 3. 从其他版本的 FoxPro 和 Visual FoxPro 中移植 部分 4. Visual FoxPro 常见问题 --------------------------------------------------------------------- 部分 1. 技术支持与市场 问题 1-1: 从何处可以获得产品的更新版本? 答案: 在 Visual FoxPro 的 Web 站点上即可获得产品的更新信息,其中包括有关 Service Pack 和更新的示例、向导及其他代码的信息,该站点的网址为: www.microsoft.com/vfoxpro 请定期查看该网站,以便下载产品的最新版本。 问题 1-2: 从何处可以得到有关 Visual FoxPro 的详细资料? 答案: 通过 Microsoft Visual FoxPro Web 站点是随时获得各种最新产品发布信息的最佳途径。在此站点上不仅有新的产品公告,而且还提供了产品的更新信息、技术文章、白皮书、专业开发人员设计的优秀示例、议公告、以及与其他许多 FoxPro web 站点的各种链接。 问题 1-3: 如何获得技术支持,以及如何报告软件错误? 答案: Microsoft Visual FoxPro Web 站点已经链接到了多种联机支持选项,其中包括覆盖面广阔的有关所有产品 Microsoft Knowledge Base(Microsoft 知识库)。您还可以阅读一份有关常见问题的清单。除联机支持之外,还可以直接通过电话获得技术支持。“帮助”菜单中的选项可列出技术支持的电话号码。这些电话号码也可用于报告产品中的错误。 问题 1-4. 什么是 Knowledge Base?如何使用它? 答案: Knowledge Base 是内容广泛的论文集,覆盖了如何使用产品的各种特性、已知的软件错误及其解决方案或回避的方法、以及其他有助于使用各种 Microsoft 产品的有用信息。通过以下站点可访问整个 Knowledge Base: support.microsoft.com 问题 1-5: 是否有 Visual FoxPro 6.0a? 答案: Microsoft 公司一向承诺为用户提供高质量的产品。如果确实需要,我们将提供 Visual FoxPro 6.0 的错误修订版。但是,修订版不使用 6.0a 版的形式。Visual FoxPro 6.0 中任何错误的修正都将包含在 Visual Studio Service Pack 中。同时还在 Visual FoxPro 的 www.microsoft.com/vfoxpro 或 Visual Studio 的www.microsoft.com/vstudio 的 Web 站点上发布修订公告。 问题 1-6: Microsoft 公司为应用程序的开发提供了一些优秀的解决方案。怎样才能知道应该向客户推荐和使用哪种产品? 答案: 在选择适用某项任务的产品时,需要考虑多方面的因素。Microsoft Visual FoxPro web 站点上有一份优秀的策略背景论文,它比较了 Visual FoxPro、Visual Basic、SQL Server 和 Access 等 Microsoft 产品之间的不同。 问题 1-7: 哪里可以找到 Visual FoxPro 的使用示例? 答案: Visual FoxPro 6.0 产品中带有丰富的示例,其中有一些是针对 6.0 版特有功能的新示例。与 Visual FoxPro 以前的版本不同,这些示例将与所有 Visual Studio 示例安装在一起。您必须运行 MSDN Library 的“自定义”安装来安装这些示例。在 Visual FoxPro 中可使用新的 HOME(2) 函数方便地找到已安装示例的位置。 除了产品中所自带的示例外,Microsoft Visual FoxPro web 站点还将经常提供新的示例。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧