public static async Task Run(Action <RemoteTaskCompletionSource, ISponsor> action, CancellationToken token) { var sponsor = new ClientSponsor(); try { var taskHandle = new RemoteTaskCompletionSource(token); sponsor.Register(taskHandle); action(taskHandle, sponsor); await taskHandle.Task; } finally { sponsor.Close(); } }
public static async Task Run(Action <RemoteTaskCompletionSource> action, CancellationToken token = default(CancellationToken)) { using (var taskHandle = new RemoteTaskCompletionSource()) { var _task = new WeakReference(taskHandle); token.Register(() => { if (!_task.IsAlive) { return; } ((RemoteTaskCompletionSource)_task.Target).SetCancelled(); }); action(taskHandle); await taskHandle.Task; } }
public async Task RunTaskAsync(string taskName, CancellationToken token = default(CancellationToken)) { await RemoteTaskCompletionSource.Run(task => { Client.RunTaskAsync(taskName, task); }, token); }
public async Task ReleaseAsync(CancellationToken token) { await RemoteTaskCompletionSource.Run(task => { Client.ReleaseAsync(task); }, token); }
public async Task <string> PullApplicationPackageAsync(string id, string version) { return(await RemoteTaskCompletionSource <string> .Run((task, sponsor) => { Packages.PullApplicationPackage(id, version, task); })); }
public async Task PushApplicationPackageAsync(string filename) { await RemoteTaskCompletionSource <object> .Run((task, sponsor) => { Packages.PushApplicationPackage(filename, task); }); }
public void RunBuildTask(IAgentBuildContext context, RemoteTaskCompletionSource completeEvent) { buildTaskRegistry.ExecuteTask(context, CancellationToken.None) .ContinueWith(completeEvent.FromTask); }
public void RunDeployScript(IServerDeployContext context, RemoteTaskCompletionSource completeEvent) { deployScriptRegistry.ExecuteScript(context, CancellationToken.None) .ContinueWith(completeEvent.FromTask); }
public async Task <string> PullProjectPackageAsync(string id, string version) { return(await RemoteTaskCompletionSource <string> .Run(task => { Packages.PullProjectPackage(id, version, task); })); }
public async Task PushApplicationPackageAsync(string filename, CancellationToken token = default(CancellationToken)) { await RemoteTaskCompletionSource.Run(task => { Packages.PushApplicationPackage(filename, task); }, token); }
public async Task RunTaskAsync(string taskName, CancellationToken token) { await RemoteTaskCompletionSource.Run((task, sponsor) => { Client.RunTaskAsync(taskName, task); }, token); }
public async Task BeginAsync(CancellationToken token) { await RemoteTaskCompletionSource.Run((task, sponsor) => { Client.Begin(task); }, token); }
public void RunTaskAsync(string taskName, RemoteTaskCompletionSource taskHandle) { OnSessionRunTask?.Invoke(taskName, taskHandle); }
public void ReleaseAsync(RemoteTaskCompletionSource taskHandle) { OnSessionRelease?.Invoke(taskHandle); }
public void Begin(RemoteTaskCompletionSource taskHandle) { OnSessionBegin?.Invoke(taskHandle); }