0
标题说明了一切。如何将异步方法的结果添加到Glimpse Broker?
我想将关于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>();
}
Additionally-我把ExternalRequestMessage
小号到经纪人从同步上下文,并且这些消息表示的标签向上如预期。
任何人都可以点亮这里发生的一切吗?
编辑:我要补充一点,我使用ContinueWith
,因为我不希望应用程序等待的结果只是将消息添加到代理,所以只是用task.Result
是不是一种选择。
在'async-await'中使用'Task.Result'是一个很好的选择。 – 2015-01-15 23:26:19
您是否尝试过在延续中设置断点并进行调试?也许它抛出一个例外? – 2015-01-16 09:30:33
是的,我已经做到了。代码执行没有问题。没有例外被抛出。我很确定这是一个Glimpse问题,或者是在多线程上运行时,消息代理的作用域的问题。 – 2015-01-16 09:48:33