Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
BuildSubmissionAwaitExtensions.cs
Go to the documentation of this file.
1 // Copyright (c) 2014 Silicon Studio Corp. (http://siliconstudio.co.jp)
2 // This file is distributed under GPL v3. See LICENSE.md for details.
3 using System.Threading.Tasks;
4 using Microsoft.Build.Execution;
5 
6 // Source: http://blog.nerdbank.net/2011/07/c-await-for-msbuild.html
7 
8 namespace SiliconStudio.Paradox.VisualStudio
9 {
10  public static class BuildSubmissionAwaitExtensions
11  {
12  public static Task<BuildResult> ExecuteAsync(this BuildSubmission submission)
13  {
14  var tcs = new TaskCompletionSource<BuildResult>();
15  submission.ExecuteAsync(SetBuildComplete, tcs);
16  return tcs.Task;
17  }
18 
19  private static void SetBuildComplete(BuildSubmission submission)
20  {
21  var tcs = (TaskCompletionSource<BuildResult>)submission.AsyncContext;
22  tcs.SetResult(submission.BuildResult);
23  }
24  }
25 }
System.Threading.Tasks.Task Task
static Task< BuildResult > ExecuteAsync(this BuildSubmission submission)