@@ -22,16 +22,14 @@ public sealed class SignalBackgroundTask : IBackgroundTask
2222 private const string TaskName = "SignalMessageBackgroundTask" ;
2323 private readonly ILogger Logger = LibsignalLogging . CreateLogger < SignalBackgroundTask > ( ) ;
2424 private BackgroundTaskDeferral Deferral ;
25- private DateTime TaskStartTime ;
26- private DateTime TaskEndTime ;
2725 private SignalLibHandle Handle ;
2826 private ToastNotifier ToastNotifier ;
27+ private AutoResetEvent e = new AutoResetEvent ( false ) ;
2928
30- public async void Run ( IBackgroundTaskInstance taskInstance )
29+ public void Run ( IBackgroundTaskInstance taskInstance )
3130 {
31+
3232 Logger . LogInformation ( "Background task starting" ) ;
33- TaskStartTime = DateTime . Now ;
34- TaskEndTime = TaskStartTime + TimeSpan . FromSeconds ( 25 ) ;
3533 Deferral = taskInstance . GetDeferral ( ) ;
3634 SignalLogging . SetupLogging ( false ) ;
3735 ToastNotifier = ToastNotificationManager . CreateToastNotifier ( ) ;
@@ -49,48 +47,25 @@ public async void Run(IBackgroundTaskInstance taskInstance)
4947 Handle = new SignalLibHandle ( true ) ;
5048 Handle . SignalMessageEvent += Handle_SignalMessageEvent ;
5149 Handle . BackgroundAcquire ( ) ;
52- await CheckTimer ( ) ;
50+ e . WaitOne ( ) ;
5351 }
5452 catch ( Exception e )
5553 {
5654 Logger . LogError ( "Background task failed: {0}\n {1}" , e . Message , e . StackTrace ) ;
5755 }
5856 finally
5957 {
58+ Logger . LogInformation ( "Background task shutting down" ) ;
59+ Handle . BackgroundRelease ( ) ;
6060 LibUtils . Unlock ( ) ;
6161 Deferral . Complete ( ) ;
6262 }
6363 }
6464
6565 private void OnCanceled ( IBackgroundTaskInstance sender , BackgroundTaskCancellationReason reason )
6666 {
67- Logger . LogWarning ( "Background task received cancel request" ) ;
68- try
69- {
70- Handle . BackgroundRelease ( ) ;
71- }
72- catch ( Exception e )
73- {
74- Logger . LogError ( "OnCanceled() failed : {0}\n {1}" , e . Message , e . StackTrace ) ;
75- }
76- finally
77- {
78- LibUtils . Unlock ( ) ;
79- Logger . LogWarning ( "Background task cancel handler finished" ) ;
80- }
81- }
82-
83- private async Task CheckTimer ( )
84- {
85- Logger . LogInformation ( "Started listening for messages" ) ;
86- while ( true )
87- {
88- if ( DateTime . Now >= TaskEndTime )
89- {
90- return ;
91- }
92- await Task . Delay ( TimeSpan . FromMilliseconds ( 250 ) ) ;
93- }
67+ Logger . LogInformation ( "Background task received cancel request" ) ;
68+ e . Set ( ) ;
9469 }
9570
9671 private void Handle_SignalMessageEvent ( object sender , SignalMessageEventArgs e )
0 commit comments