加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 内置异常处理的任务?

发布时间:2020-12-15 20:59:41 所属栏目:百科 来源:网络整理
导读:使用任务时,您必须特别注意处理异常,这是一个示例: class Program{ static void Main(string[] args) { Taskint task = new Taskint(Test); task.ContinueWith(ExceptionHandler,TaskContinuationOptions.OnlyOnFaulted); task.Start(); Console.ReadLine()
使用任务时,您必须特别注意处理异常,这是一个示例:

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()调用.

我担心没有更简单的选择,并且总是需要一定程度的“手动说明”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读