diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-04-20 07:22:48 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-04-20 07:22:48 +0300 |
| commit | 17abbf35ba72283c6dab9135f1e75b7057371431 (patch) | |
| tree | a829d8b8831bd4e108f4aa182bd7d5b4f75d31e5 /Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ProjectSession.cs | |
| parent | 5f8be6e26e24af12db8c56ab63665ab02d0a5f39 (diff) | |
| download | Tango-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.cs | 12 |
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; + } } } |
