使用任务时,您必须特别注意处理异常,这是一个示例:
class Program { static void Main(string[] args) { Task<int> task = new Task<int>(Test); task.ContinueWith(ExceptionHandler,TaskContinuationoptions.OnlyOnFaulted); task.Start(); Console.ReadLine(); } static int test() { throw new Exception(); } static void ExceptionHandler(Task<int> task) { var exception = task.Exception; Console.WriteLine(exception); } }
从here起
解决方法
您可以创建MyLoggingTask作为Task的子类,实现与您相关的构造函数,或者所有这些构造函数都是安全的(我在.NET Framework 4.5中看到其中的8个),并覆盖Start()方法.
然后用MyLoggingTask替换每个Task用法对子类命名空间的引用,或者使用Task = Your.NameSpace.MyLoggingTask最小化’manual’方面,创建一个实际上属于你自己的类的Task别名.
作为替代方案,您可以创建一个扩展方法public static StartWithLogging< T>(此任务< T>任务)来处理ContinueWith.然后用StartWithLogging()引用扩展类的命名空间替换每个Start()调用.
我担心没有更简单的选择,并且总是需要一定程度的“手动说明”.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。