private bool ExecutePlay(int contextHandle, int startMillisecond, int endMillisecond, bool logAudio) { ExecutionContext context; if (!_registeredContexts.TryGetValue(contextHandle, out context)) { return(false); } if (!(((context.SynchronousEngineInstance != null) && (context.Object != null)) && context.Object.CanBePlayed)) { return(false); } if (context.SynchronousEngineInstance.IsRunning) { return(false); } if (!context.SynchronousEngineInstance.IsPaused) { try { context.SynchronousEngineInstance.Initialize(context.Object); } catch (Exception exception) { LogError("ExecutePlay", exception); return(false); } } var str = context.SynchronousEngineInstance.CurrentObject.Key.ToString(CultureInfo.InvariantCulture); Host.Communication["KeyInterceptor_" + str] = context.KeyInterceptor; Host.Communication["ExecutionContext_" + str] = context; var flag = context.SynchronousEngineInstance.Play(startMillisecond, endMillisecond, logAudio); var saveSettings = false; foreach (var form in context.OutputPlugInForms) { form.BringToFront(); if (_preferences.CreateIfMissing("SavePlugInDialogPositions", form.Name + ".x", 0) | _preferences.CreateIfMissing("SavePlugInDialogPositions", form.Name + ".y", 0)) { saveSettings = true; } form.Location = new Point(_preferences.GetInteger(form.Name + ".x"), _preferences.GetInteger(form.Name + ".y")); } if (saveSettings) { _preferences.SaveSettings(); } return(flag); }