diff --git a/SourceGen/Sandbox/DomainManager.cs b/SourceGen/Sandbox/DomainManager.cs index b458e94..4d1c1b2 100644 --- a/SourceGen/Sandbox/DomainManager.cs +++ b/SourceGen/Sandbox/DomainManager.cs @@ -79,10 +79,10 @@ namespace SourceGen.Sandbox { Debug.WriteLine("Setting keep-alive timer..."); mKeepAliveTimer = new Timer(60 * 1000); mKeepAliveTimer.Elapsed += (source, e) => { - // I don't know if there's a shutdown race. The dispose code stops the timer - // before clearing the other fields, but I don't know if the Stop() code - // waits for the currently-executing timer event to finish. So wrap - // everything in try/catch. + // The Timer docs say that Elapsed events can occur after Stop(), because + // the signal to raise Elapsed is queued on a thread pool thread. Instead + // of being careful we just wrap it in try/catch, since nothing bad happens + // if this fails. try { int result = mPluginManager.Instance.Ping(1000); Debug.WriteLine("KeepAlive tid=" + diff --git a/SourceGen/WpfGui/EditAppSettings.xaml b/SourceGen/WpfGui/EditAppSettings.xaml index f431982..acaf899 100644 --- a/SourceGen/WpfGui/EditAppSettings.xaml +++ b/SourceGen/WpfGui/EditAppSettings.xaml @@ -759,7 +759,7 @@ limitations under the License. - + @@ -771,12 +771,14 @@ limitations under the License. - - + + + + @@ -831,23 +833,26 @@ limitations under the License. - - - - - - - - - + + + + + + + + + + + + diff --git a/docs/sgmanual/index.html b/docs/sgmanual/index.html index 1b241fc..652e7fb 100644 --- a/docs/sgmanual/index.html +++ b/docs/sgmanual/index.html @@ -149,9 +149,9 @@ using the Help > Help menu item or by hitting
  • Project Properties