Browse Source

Delay 5 seconds to start controller when OS is about to resume

Workaround for slow computers

Credit to GangZhou's code

Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
tags/3.3.1
Syrone Wong 8 years ago
parent
commit
433c3bfbcc
1 changed files with 34 additions and 1 deletions
  1. +34
    -1
      shadowsocks-csharp/Program.cs

+ 34
- 1
shadowsocks-csharp/Program.cs View File

@@ -92,7 +92,14 @@ namespace Shadowsocks
{ {
case PowerModes.Resume: case PowerModes.Resume:
Logging.Info("os wake up"); Logging.Info("os wake up");
_controller?.Start();
if (_controller != null)
{
System.Timers.Timer timer = new System.Timers.Timer(5 * 1000);
timer.Elapsed += Timer_Elapsed;
timer.AutoReset = false;
timer.Enabled = true;
timer.Start();
}
break; break;
case PowerModes.Suspend: case PowerModes.Suspend:
_controller?.Stop(); _controller?.Stop();
@@ -101,6 +108,32 @@ namespace Shadowsocks
} }
} }
private static void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
try
{
_controller?.Start();
}
catch (Exception ex)
{
Logging.LogUsefulException(ex);
}
finally
{
try
{
System.Timers.Timer timer = (System.Timers.Timer)sender;
timer.Enabled = false;
timer.Stop();
timer.Dispose();
}
catch (Exception ex)
{
Logging.LogUsefulException(ex);
}
}
}
private static void Application_ApplicationExit(object sender, EventArgs e) private static void Application_ApplicationExit(object sender, EventArgs e)
{ {
if (_controller != null) if (_controller != null)


Loading…
Cancel
Save