添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

网上看了很多 都是说task创建了一个任务,需在任务最后通过CancellationTokenSource调用订阅服务区关闭程序
但是在本人开发期间,并未调用Task,仍然出现此报错,且报错是偶发的。
后面我在 stackoverflow 上找到可能的原因 希望帮到大家

这里大概描述一下

在里面NET Framework 4.7.1和早期版本,WPF可能会创建一个系统。Windows。线程。上的调度程序。NET终结器线程。这是在中修复的。NET Framework 4.7.2及更高版本,使弱事件的清理具有线程意识。因此,WPF可能会调用System。Windows。线程。调度员。调用以完成清理过程。
在某些应用程序中,终结器定时的这种变化可能会在AppDomain或进程关闭期间导致异常。这通常出现在应用程序中,这些应用程序在进程或AppDomain关闭之前没有正确关闭工作线程上运行的调度程序。这样的应用程序应该注意正确地管理调度器的生命周期。

在里面NET Framework 4.7.2及更高版本,开发人员可以禁用此修复程序,以帮助缓解(但不是消除)由于清理更改可能出现的时间问题。

若要禁用清除中的更改,请使用以下AppContext标志。

<configuration>
    <runtime>
        <AppContextSwitchOverrides value="Switch.MS.Internal.DoNotInvokeInWeakEventTableShutdownListener=true"/>
    </runtime>
</configuration>
				
Exception: System.AggregateException: 发生一个或多个错误。 ---> System.Threading.Tasks.TaskCanceledException: 已取消一个任务。 System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(System.Net.Http.HttpRequestMessa
在我的主程序中,需要处理一个不确定费时多久的工作(有可能1ms完成,也有可能50s,但是是一段顺序执行的代码,只跑一轮,没有循环),我希望当这个工作执行超过一定时间(例如3s)之后,就被停止。 我把这个工作放到business类的Hardwork()方法中去做,并被主程序调用。 static void Main(string[] args)
本篇的内容也很重要,因为涉及到了日常经常会碰到的取消任务操作。 从我个人了解到的情况,基本上大家都采用CancellationTokenSource方法来取消任务,因此这里就举几个简单的例子。例子依然是来自于《C#多线程编程实战》。 private static int TaskMethod(string name, int seconds, CancellationToken token)
异常详细报错:关闭程序时出现的异常。 引发的异常:“System.Threading.Tasks.TaskCanceledException”(位于 mscorlib.dll 中) 引发的异常:“System.TimeoutException”(位于 WindowsBase.dll 中) 原因:使用Environment.Exit(0)强制关闭程序; 解决方式:不要使用Environm...
最好的参考文档莫过于直接参看Thread 类,由于在.net 中,代码是未开源的,但是我们也是可以通过该类让我们获取一定的信息去使用该类。 例如初始化Thread实例: public Thread(ThreadStart start); [ComVisible(true)] public delegate void ThreadStart(...
using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; public class Example public static void Main() // Define the cancellation t
CancellationTokenSource这个是取消的发送信号,CancellationTokenSource每次传入Task.Run的时候必须是新的对象,不能是已经被调用了CancellationTokenSource.Cancle(true)了的,不然Task.Run不会启动 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading;