0
我所擁有的是在調用服務器的視圖上的AJAX表單。此調用執行n個任務,其中n是由數據庫中的記錄決定的數字(通常不超過10條記錄)。每個記錄對應於TFS中的構建定義,因此我想要做的是獲取所有這些構建定義,將它們排隊在TFS中,並且每個構建完成後更新UI,以便用戶知道哪些構建已完成。使用MVC3與異步任務來更新用戶界面
不幸的是我不確定如何做到最好。我正沿着這些路線思考的東西:
foreach (var dep in builds)
{
TFS tfsServer = new TFS(TFS_SERVER_ADDRESS);
IBuildServer buildServer;
int id = tfsServer.QueuBuild(dep.TeamProject, dep.BuildDefinition);
string teamProject = dep.TeamProject;
Task.Factory.StartNew(() => GetBuildStatus(teamProject, id, tfsServer));
}
被稱爲任務是:
private void GetBuildStatus(string TeamProject, int BuildID, TFS Server)
{
Server.GetBuildStatus(TeamProject, BuildID);
AsyncManager.OutstandingOperations.Decrement();
}
這裏的問題是,我已完成的方法是不會被調用,直到所有的構建具有完成。我會如何一次將數據反饋給用戶界面?
還值得一提的是,GetBuildStatus方法是這樣的:
do
{
var build = buildsView.QueuedBuilds.FirstOrDefault(x => x.Id == BuildID);
if(build != null)
{
status = build.Status;
detail = build.Build;
}
} while (status != QueueStatus.Completed);
return detail.Status.ToString();