aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ProjectSession.cs
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-04-20 07:22:48 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-04-20 07:22:48 +0300
commit17abbf35ba72283c6dab9135f1e75b7057371431 (patch)
treea829d8b8831bd4e108f4aa182bd7d5b4f75d31e5 /Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ProjectSession.cs
parent5f8be6e26e24af12db8c56ab63665ab02d0a5f39 (diff)
downloadTango-17abbf35ba72283c6dab9135f1e75b7057371431.tar.gz
Tango-17abbf35ba72283c6dab9135f1e75b7057371431.zip
Scripting..
Diffstat (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ProjectSession.cs')
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ProjectSession.cs12
1 files changed, 11 insertions, 1 deletions
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ProjectSession.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ProjectSession.cs
index a613f2bcc..565949402 100644
--- a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ProjectSession.cs
+++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ProjectSession.cs
@@ -9,6 +9,7 @@ namespace Tango.Scripting.Basic
public class ProjectSession
{
private Action _abortAction;
+ private TaskCompletionSource<object> _completion;
public event EventHandler<ProjectSessionStateChangedEventArgs> StateChanged;
@@ -18,6 +19,7 @@ namespace Tango.Scripting.Basic
public ProjectSession(Project project, Action abortAction)
{
+ _completion = new TaskCompletionSource<object>();
Project = project;
_abortAction = abortAction;
}
@@ -26,24 +28,27 @@ namespace Tango.Scripting.Basic
{
_abortAction();
State = ProjectSessionState.Aborted;
+ _completion.SetException(new OperationCanceledException("Project execution aborted."));
RaiseStateChanged();
}
internal void Failed(Exception ex)
{
State = ProjectSessionState.Failed;
+ _completion.SetException(ex);
RaiseStateChanged(null, ex);
}
internal void Completed(object returnValue)
{
State = ProjectSessionState.Completed;
+ _completion.SetResult(returnValue);
RaiseStateChanged(returnValue, null);
}
private void RaiseStateChanged(object returnValue = null, Exception ex = null)
{
- StateChanged?.Invoke(this,
+ StateChanged?.Invoke(this,
new ProjectSessionStateChangedEventArgs()
{
ReturnValue = returnValue,
@@ -51,5 +56,10 @@ namespace Tango.Scripting.Basic
Exception = ex
});
}
+
+ public Task<Object> WaitForCompletion()
+ {
+ return _completion.Task;
+ }
}
}