Skip to content

Commit 2f864fb

Browse files
Use try/finally block to unsubscribe event handlers
1 parent 18717b5 commit 2f864fb

File tree

1 file changed

+9
-13
lines changed

1 file changed

+9
-13
lines changed

src/CommunityToolkit.Maui.Camera/Views/CameraView.shared.cs

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -214,26 +214,22 @@ public async Task<Stream> CaptureImage(CancellationToken token)
214214
MediaCaptured += HandleMediaCaptured;
215215
MediaCaptureFailed += HandleMediaCapturedFailed;
216216

217-
await Handler.CameraManager.TakePicture(token);
218-
219-
var stream = await mediaStreamTCS.Task.WaitAsync(token);
220-
return stream;
221-
222-
void HandleMediaCaptured(object? sender, MediaCapturedEventArgs e)
217+
try
223218
{
224-
MediaCaptured -= HandleMediaCaptured;
225-
MediaCaptureFailed -= HandleMediaCapturedFailed;
219+
await Handler.CameraManager.TakePicture(token);
226220

227-
mediaStreamTCS.SetResult(e.Media);
221+
var stream = await mediaStreamTCS.Task.WaitAsync(token);
222+
return stream;
228223
}
229-
230-
void HandleMediaCapturedFailed(object? sender, MediaCaptureFailedEventArgs e)
224+
finally
231225
{
232226
MediaCaptured -= HandleMediaCaptured;
233227
MediaCaptureFailed -= HandleMediaCapturedFailed;
234-
235-
mediaStreamTCS.SetException(new CameraException(e.FailureReason));
236228
}
229+
230+
void HandleMediaCaptured(object? sender, MediaCapturedEventArgs e) => mediaStreamTCS.SetResult(e.Media);
231+
232+
void HandleMediaCapturedFailed(object? sender, MediaCaptureFailedEventArgs e) => mediaStreamTCS.SetException(new CameraException(e.FailureReason));
237233
}
238234

239235
/// <inheritdoc cref="ICameraView.StartCameraPreview"/>

0 commit comments

Comments
 (0)