小编Riz*_*ama的帖子

寻找导致“未观察到任务异常...”的原因

首先,我要说的是,很难详细解释我的问题,但我会尽力。我将更新详细的解释或我使用的可能导致异常的更多代码。如果我的代码很混乱,我很抱歉。

我读过很多同名的问题,但我一点运气都没有。我对线程/任务/调度程序了解甚少,所以如果您发现我的代码有问题,请指导我。


简介

我的应用程序每n分钟通过计时器执行一次后台任务。

后台任务:从API获取数据,然后生成Window元素作为包含数据的表单,然后打印它们。

问题:目前该异常已发生两次,导致无法生成两个表单文档,因此无法打印它们。

获得的详细异常TaskScheduler.UnobservedTaskException是:

  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常。结果,未观察到的异常被终结器线程重新抛出。

  • 堆栈跟踪:不适用
  • 内部异常:

    System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]


这是我的一段代码,可能对您查找问题根源有用:

public void BackgroundTask(object sender, EventArgs e)
{
    Application.Current.Dispatcher.Invoke(
        new Action(GetInvoiceData),
        DispatcherPriority.Background,
        null
    );
}
Run Code Online (Sandbox Code Playgroud)

...哪里GetInvoiceData

public async void GetInvoiceData()
{
    try
    {
        JsonData = await ApiHelperInstance.Post(ApiParam);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    finally
    {
        if (!string.IsNullOrEmpty(JsonData))
        {
            var apiReturn = new ApiReturn();

            try
            {
                apiReturn = JsonConvert.DeserializeObject<ApiReturn>(JsonData);
            }
            catch (JsonException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (apiReturn.Result != …
Run Code Online (Sandbox Code Playgroud)

c# wpf task dispatcher

2
推荐指数
1
解决办法
4053
查看次数

标签 统计

c# ×1

dispatcher ×1

task ×1

wpf ×1