2014-04-21 04:57:38 +08:00
|
|
|
|
namespace NTwain.Internals
|
2014-04-06 04:48:28 +08:00
|
|
|
|
{
|
2014-04-21 04:57:38 +08:00
|
|
|
|
class TentativeStateCommitable : ICommittable
|
2014-04-06 04:48:28 +08:00
|
|
|
|
{
|
|
|
|
|
bool _commit;
|
2014-04-21 06:42:51 +08:00
|
|
|
|
ITwainSessionInternal _session;
|
2014-04-06 04:48:28 +08:00
|
|
|
|
int _origState;
|
|
|
|
|
int _newState;
|
2014-04-21 06:42:51 +08:00
|
|
|
|
public TentativeStateCommitable(ITwainSessionInternal session, int newState)
|
2014-04-06 04:48:28 +08:00
|
|
|
|
{
|
|
|
|
|
_session = session;
|
|
|
|
|
_origState = session.State;
|
|
|
|
|
_newState = newState;
|
|
|
|
|
_session.ChangeState(newState, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region ICommitable Members
|
|
|
|
|
|
|
|
|
|
public void Commit()
|
|
|
|
|
{
|
|
|
|
|
if (_session.State == _newState)
|
|
|
|
|
{
|
|
|
|
|
_session.ChangeState(_newState, true);
|
|
|
|
|
}
|
|
|
|
|
_commit = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region IDisposable Members
|
|
|
|
|
|
|
|
|
|
public void Dispose()
|
|
|
|
|
{
|
|
|
|
|
if (!_commit && _session.State == _newState)
|
|
|
|
|
{
|
|
|
|
|
_session.ChangeState(_origState, false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
}
|