如何将异步方法的结果添加到Glimpse Broker?

时间:2015-01-15 17:31:12

标签: c# async-await glimpse

标题说明了这一切。

我想将一些async方法的结果信息放入Glimpse Message Broker中。我尝试使用Task.ContinueWith

        task.ContinueWith((t) =>
        {                
            var response = t.Result;
            var message = new ExternalRequestMessage
            {
                Url = url,
                Method = method,
                RequestBody = requestBody,
                WasAsync = true,
                StatusCode = (int)response.StatusCode,
                Status = response.StatusCode.ToString(),
                WasSuccess = response.IsSuccessStatusCode,
                Fault = response.Fault,
            };

            if (messageBroker != null)
            {
                messageBroker.Publish(message);
            }
        });

这段代码执行没有问题,我可以设置断点并遵循代码,所以我知道它会执行。

然而,当我从经纪人处读回消息时,他们不在那里。例如,下面的选项卡代码上的断点显示消息不存在:

    public override object GetData(ITabContext context)
    {
        return context.GetMessages<ExternalRequestMessage>();
    }

此外 - 我将ExternalRequestMessage从同步上下文放到代理上,这些消息按预期显示在选项卡中。

任何人都可以了解这里发生的事情吗?

修改:我应该补充一点,我正在使用ContinueWith因为我不希望应用等待结果只是为了将消息添加到代理,所以只是使用task.Result不是一种选择。

1 个答案:

答案 0 :(得分:0)

想出来 -

我的web.config文件

<appSettings>
    <add key="Glimpse:DisableAsyncSupport" value="true"/>
</appSettings>

删除此值或将其设置为false可解决此问题。