diff --git a/src/SharpIDE.Application/Features/Run/RunService.cs b/src/SharpIDE.Application/Features/Run/RunService.cs index 410f9cb..bd504e5 100644 --- a/src/SharpIDE.Application/Features/Run/RunService.cs +++ b/src/SharpIDE.Application/Features/Run/RunService.cs @@ -109,7 +109,7 @@ public class RunService(ILogger logger, RoslynAnalysis roslynAnalysi GlobalEvents.Instance.StartedRunningProject.InvokeParallelFireAndForget(); GlobalEvents.Instance.ProjectStartedRunning.InvokeParallelFireAndForget(project); } - project.InvokeProjectStartedRunning(); + project.ProjectStartedRunning.InvokeParallelFireAndForget(); await process.WaitForExitAsync().WaitAsync(project.RunningCancellationTokenSource.Token).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing); if (project.RunningCancellationTokenSource.IsCancellationRequested) { @@ -131,7 +131,7 @@ public class RunService(ILogger logger, RoslynAnalysis roslynAnalysi GlobalEvents.Instance.ProjectStoppedRunning.InvokeParallelFireAndForget(project); } - project.InvokeProjectStoppedRunning(); + project.ProjectStoppedRunning.InvokeParallelFireAndForget(); _logger.LogInformation("Process for project {ProjectName} has exited", project.Name); } diff --git a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs index 9195cab..81a3ceb 100644 --- a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs +++ b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs @@ -5,6 +5,7 @@ using Microsoft.CodeAnalysis; using ObservableCollections; using SharpIDE.Application.Features.Analysis; using SharpIDE.Application.Features.Evaluation; +using SharpIDE.Application.Features.Events; using Project = Microsoft.Build.Evaluation.Project; namespace SharpIDE.Application.Features.SolutionDiscovery.VsPersistence; @@ -133,11 +134,9 @@ public class SharpIdeProjectModel : ISharpIdeNode, IExpandableSharpIdeNode, IChi public bool OpenInRunPanel { get; set; } public Channel? RunningOutputChannel { get; set; } - public event Func ProjectStartedRunning = () => Task.CompletedTask; - public void InvokeProjectStartedRunning() => ProjectStartedRunning.Invoke(); + public EventWrapper ProjectStartedRunning { get; } = new(() => Task.CompletedTask); + public EventWrapper ProjectStoppedRunning { get; } = new(() => Task.CompletedTask); - public event Func ProjectStoppedRunning = () => Task.CompletedTask; - public void InvokeProjectStoppedRunning() => ProjectStoppedRunning.Invoke(); public ObservableHashSet Diagnostics { get; internal set; } = []; } diff --git a/src/SharpIDE.Godot/Features/Run/RunMenuItem.cs b/src/SharpIDE.Godot/Features/Run/RunMenuItem.cs index 507bc61..cb945a2 100644 --- a/src/SharpIDE.Godot/Features/Run/RunMenuItem.cs +++ b/src/SharpIDE.Godot/Features/Run/RunMenuItem.cs @@ -24,8 +24,8 @@ public partial class RunMenuItem : HBoxContainer _stopButton.Pressed += OnStopButtonPressed; _debugButton = GetNode