protected bool WaitAll(WaitHandle[] events, IWaitController waitCtrl) { var index = waitCtrl == null ? WaitHandleUtils.WaitOneOrAllOthers(_disposeEvent, events) : waitCtrl.WaitOneOrAllOthers(_disposeEvent, events); return(index != 0); }
protected bool WaitAny( WaitHandle[] events, out int occurredEventIndex, int timeout, IWaitController waitCtrl) { var eventsEx = new WaitHandle[events.Length + 1]; var disposeEventIndex = events.Length; events.CopyTo(eventsEx, 0); eventsEx[disposeEventIndex] = _disposeEvent; occurredEventIndex = waitCtrl == null ? WaitHandle.WaitAny(eventsEx, timeout) : waitCtrl.WaitAny(eventsEx, timeout); return(occurredEventIndex != disposeEventIndex); }
public bool WaitForSynchronizationFinished(IWaitController waitCtrl) { while (true) { if (!WaitOne(_synchronizationFinished, waitCtrl)) { return(false); } lock (s_syncResultSync) { if (_lastSyncResult == SynchronizationResult.SyncRequestIgnored) { _synchronizationFinished.Reset(); continue; } return(_lastSyncResult == SynchronizationResult.SynchronizationNotEnabled || _lastSyncResult == SynchronizationResult.Succeeded); } } }
public object GetDataTransmittedFromRemoteScanner(string name, IWaitController waitCtrl) { CodeContract.Requires(!string.IsNullOrEmpty(name)); while (true) { var data = FindTransmittedData(name); if (data != null) { return(data); } int index; var res = WaitAny( new[] { _remoteScannerDisconnected, _newDataTransmitted }, out index, 1000, // 1 сек waitCtrl); if (!res || index == 0) { return(null); } } }
private int SetIndicatorAndPlayPhrase( IWaitController waitController, WaitHandle[] waitedEventsDuringPlaying, EventWaitHandle playSoundFinishedEvent, string text, string[] sounds, bool silent) { if (!string.IsNullOrEmpty(text)) { _logger.LogInfo(Message.WorkflowText, text); _scannerManager.SetIndicator(text); } var occurredEventIndex = -1; if (!silent) { ResetEvents(waitedEventsDuringPlaying); _soundManager.PlaySounds(sounds, (sender, e) => playSoundFinishedEvent.Set()); try { occurredEventIndex = waitController.WaitAny(waitedEventsDuringPlaying); if (occurredEventIndex <= waitedEventsDuringPlaying.Length - 2) { _soundManager.StopPlaying(); return(occurredEventIndex); } occurredEventIndex = -1; } catch (ActivityExecutionInterruptException) { _soundManager.StopPlaying(); _logger.LogVerbose(Message.WorkflowSoundPlayingStoppedByActivityExecutionInterrupt); throw; } } return(occurredEventIndex); }
protected bool WaitOne(WaitHandle ev, int timeout, IWaitController waitCtrl) { int index; return WaitAny(new[] { ev }, out index, timeout, waitCtrl); }
protected bool WaitAny( WaitHandle[] events, out int occurredEventIndex, int timeout, IWaitController waitCtrl) { var eventsEx = new WaitHandle[events.Length + 1]; var disposeEventIndex = events.Length; events.CopyTo(eventsEx, 0); eventsEx[disposeEventIndex] = _disposeEvent; occurredEventIndex = waitCtrl == null ? WaitHandle.WaitAny(eventsEx, timeout) : waitCtrl.WaitAny(eventsEx, timeout); return occurredEventIndex != disposeEventIndex; }
protected bool WaitAny(WaitHandle[] events, out int occurredEventIndex, IWaitController waitCtrl) { return WaitAny(events, out occurredEventIndex, Timeout.Infinite, waitCtrl); }
protected bool WaitAll(WaitHandle[] events, IWaitController waitCtrl) { var index = waitCtrl == null ? WaitHandleUtils.WaitOneOrAllOthers(_disposeEvent, events) : waitCtrl.WaitOneOrAllOthers(_disposeEvent, events); return index != 0; }
protected bool Sleep(TimeSpan timeout, IWaitController waitCtrl) { return !(waitCtrl == null ? _disposeEvent.WaitOne(timeout) : waitCtrl.WaitOne(_disposeEvent, timeout)); }
protected bool WaitOne(WaitHandle ev, int timeout, IWaitController waitCtrl) { int index; return(WaitAny(new[] { ev }, out index, timeout, waitCtrl)); }
protected bool Sleep(TimeSpan timeout, IWaitController waitCtrl) { return(!(waitCtrl == null ? _disposeEvent.WaitOne(timeout) : waitCtrl.WaitOne(_disposeEvent, timeout))); }
protected bool WaitAny(WaitHandle[] events, out int occurredEventIndex, IWaitController waitCtrl) { return(WaitAny(events, out occurredEventIndex, Timeout.Infinite, waitCtrl)); }
private int SetIndicatorAndPlayPhrase( IWaitController waitController, WaitHandle[] waitedEventsDuringPlaying, EventWaitHandle playSoundFinishedEvent, string text, string[] sounds, bool silent) { if (!string.IsNullOrEmpty(text)) { _logger.LogInfo(Message.WorkflowText, text); _scannerManager.SetIndicator(text); } var occurredEventIndex = -1; if (!silent) { ResetEvents(waitedEventsDuringPlaying); _soundManager.PlaySounds(sounds, (sender, e) => playSoundFinishedEvent.Set()); try { occurredEventIndex = waitController.WaitAny(waitedEventsDuringPlaying); if (occurredEventIndex <= waitedEventsDuringPlaying.Length - 2) { _soundManager.StopPlaying(); return occurredEventIndex; } occurredEventIndex = -1; } catch (ActivityExecutionInterruptException) { _soundManager.StopPlaying(); _logger.LogVerbose(Message.WorkflowSoundPlayingStoppedByActivityExecutionInterrupt); throw; } } return occurredEventIndex; }
public bool WaitForSynchronizationFinished(IWaitController waitCtrl) { while (true) { if (!WaitOne(_synchronizationFinished, waitCtrl)) return false; lock (s_syncResultSync) { if (_lastSyncResult == SynchronizationResult.SyncRequestIgnored) { _synchronizationFinished.Reset(); continue; } return (_lastSyncResult == SynchronizationResult.SynchronizationNotEnabled || _lastSyncResult == SynchronizationResult.Succeeded); } } }
public object GetDataTransmittedFromRemoteScanner(string name, IWaitController waitCtrl) { CodeContract.Requires(!string.IsNullOrEmpty(name)); while (true) { var data = FindTransmittedData(name); if (data != null) return data; int index; var res = WaitAny( new[] { _remoteScannerDisconnected, _newDataTransmitted }, out index, 1000, // 1 сек waitCtrl); if (!res || index == 0) return null; } }