簡體   English   中英

無法捕獲異步/等待任務異常

[英]Unable to catch async/await Task exception

我有一種解雇方法(用於遺留目的),

BackgroundWorker.Run(() => {
          // my code here that throws an error                         
});

我不想等待BackgroundWorker.Run 這是我的課,

public class BackgroundWorker
{        
    public static Task Run(Action action)
    {
        return new IISBackgroundTask().DoWorkAsync(action);
    }
    class IISBackgroundTask : IRegisteredObject
    {
        public IISBackgroundTask()
        {
            HostingEnvironment.RegisterObject(this);
        }            
        void IRegisteredObject.Stop(bool immediate)
        {
            if (_task.IsCompleted || _task.IsCanceled || _task.IsFaulted || immediate)
            {
                HostingEnvironment.UnregisterObject(this);
            }
        }
        public async Task DoWorkAsync(Action action)
        {
            try
            {
                _task =  Task.Run(action);
                await _task;
            }
            catch (AggregateException ex)
            {
                // Log exceptions
                foreach (var innerEx in ex.InnerExceptions)
                {
                    Logger.Log(innerEx);
                }
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
            }
        }

        private Task _task;
    }
}

我無法捕捉到異常。

更新:如果我在BackgroundWorker.Run添加一個wait,它將可以正常工作,但是我想開火並忘記。

目前,我已經使用

        public void DoWork(Action action)
        {
            _task = Task.Run(() => 
            {
                try
                {
                    action();
                }
                catch (AggregateException ex)
                {
                    foreach (var innerEx in ex.InnerExceptions)
                    {
                        Logger.Log(innerEx);
                    }
                }
                catch (Exception ex)
                {
                    Logger.Log(ex);
                }
            });
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM