2016-12-14 46 views
0

如何在调用_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..."; 
} 

回答

0

你想用某种“信号“,例如IObservableTask,其在数据到达时完成。

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; 
... 
相关问题