/// <summary> /// Disposes all used resources /// </summary> public void Dispose() { Stop(); inputDevice.Dispose(); xInput.Dispose(); xOutputInterface.Dispose(); }
public void tポーリング(bool bWindowがアクティブ中, bool bバッファ入力を使用する) { lock (this.objMidiIn排他用) { // foreach( IInputDevice device in this.list入力デバイス ) for (int i = this.list入力デバイス.Count - 1; i >= 0; i--) // #24016 2011.1.6 yyagi: change not to use "foreach" to avoid InvalidOperation exception by Remove(). { IInputDevice device = this.list入力デバイス[i]; try { device.tポーリング(bWindowがアクティブ中, bバッファ入力を使用する); } catch (SharpDX.SharpDXException e) // #24016 2011.1.6 yyagi: catch exception for unplugging USB joystick, and remove the device object from the polling items. { if (e.ResultCode == ResultCode.OtherApplicationHasPriority) { // #xxxxx: 2017.5.9: from: このエラーの時は、何もしない。 } else { // #xxxxx: 2017.5.9: from: その他のエラーの場合は、デバイスが外されたと想定してRemoveする。 this.list入力デバイス.Remove(device); device.Dispose(); Trace.TraceError("tポーリング時に対象deviceが抜かれており例外発生。同deviceをポーリング対象からRemoveしました。"); } } } } }
public virtual void Close() { try { IOmonitor.IdleForLock(_IOprocessing); // bool locked; if (_InputDevice != null && _InputDevice.IsInitialized && _InputDevice.InitializedBy == ParentIDE.Machine) { locked = false; if (_InputDevice.IsLockingRequiredForDispose()) { IOmonitor.IdleForLock(_InputDevice, out locked); } _InputDevice.Dispose(); if (locked) { IOmonitor.Unlock(_InputDevice); } } _InputBuffer = new byte[0]; _InBuffPtr = 0; _InputWordBuffer = new string[0]; _WdBuffPtr = 0; } finally { // IOmonitor.Unlock(_IOprocessing); } }
public void tポーリング(bool bWindowがアクティブ中, bool bバッファ入力を使用する) { lock (this.objMidiIn排他用) { // foreach( IInputDevice device in this.list入力デバイス ) for (int i = this.list入力デバイス.Count - 1; i >= 0; i--) // #24016 2011.1.6 yyagi: change not to use "foreach" to avoid InvalidOperation exception by Remove(). { IInputDevice device = this.list入力デバイス[i]; try { device.tポーリング(bWindowがアクティブ中, bバッファ入力を使用する); } catch (DirectInputException) // #24016 2011.1.6 yyagi: catch exception for unplugging USB joystick, and remove the device object from the polling items. { this.list入力デバイス.Remove(device); device.Dispose(); Trace.TraceError("tポーリング時に対象deviceが抜かれており例外発生。同deviceをポーリング対象からRemoveしました。"); } } } }
public void tPolling(bool bIsWindowActive, bool bEnableBufferInput) { lock (this.objMidiIn排他用) { // foreach( IInputDevice device in this.listInputDevices ) for (int i = this.listInputDevices.Count - 1; i >= 0; i--) // #24016 2011.1.6 yyagi: change not to use "foreach" to avoid InvalidOperation exception by Remove(). { IInputDevice device = this.listInputDevices[i]; try { device.tPolling(bIsWindowActive, bEnableBufferInput); } catch (Exception e) // #24016 2011.1.6 yyagi: catch exception for unplugging USB joystick, and remove the device object from the polling items. { this.listInputDevices.Remove(device); device.Dispose(); Trace.TraceError("tPolling時に例外発生。該当deviceをポーリング対象からRemoveしました。"); Trace.TraceError(e.ToString()); } } } }
public void Dispose() { Stop(); inputDevice.Dispose(); scpDevice?.Dispose(); }