2016-12-14 71 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; 
... 
相關問題