等待异步:如何在第二个启动之前完成一个方法
问题描述:
如何在调用_reportViewerService.ShowReport之前完成GetRecords。使用SignalR setUi更新一个txt字段,该字段显示getRecords中计算结果的一部分的名称,其余部分应该在后面的报告中打印。等待异步:如何在第二个启动之前完成一个方法
(发生了什么现在都运行相同的时间,则报告被显示之前,我看到实时更新状态)提前
感谢
public async Task ViewReport()
{
var reportData = await _apiCallExecutor.ExecuteAsync(new GetRecords(queryModel, setUiHooks));
try
{
if (reportData.Count > 0)
{
var settings = new ReportSettings();
settings.ReportPath = "Utilities/SetDeliveryIdByBatchReport";
settings.ReportTitle = "Set Delivery ID By Batch - Exception Listing";
settings.DataSources.Add("DeliveryIdExceptionRecords", reportData);
ReportStatus = "Printing Exception Report...";
await _reportViewerService.ShowReport(settings);
}
}
finally
{
ViewModelState = ViewModelStates.Edit;
}
ReportStatus = "Done...";
}
答
你想用某种“信号“,例如IObservable
或Task
,其在数据到达时完成。
class GetRecords
{
...
public Task Done { get; }
// or: public IObservable<Unit> Done { get; }
}
则:
var getRecords = new GetRecords(queryModel, setUiHooks);
var reportData = await _apiCallExecutor.ExecuteAsync(getRecords);
await getRecords.Done;
...