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