交易控制

【勇芳软件工作室】汉化HomePreviousNext

应用程序可以将事务挂起到其DDE回调函数__与特定会话句柄相关联的那些事务或所有事务,而不管对话句柄。当应用程序接收到需要冗长处理的事务时,此函数非常有用。在这种情况下,应用程序可以返回CBR_BLOCK返回代码以暂停与事务的会话句柄相关的未来事务,以便应用程序可以自由处理其他会话。

处理完成后,应用程序将调用DdeEnableCallback函数来恢复与挂起的会话关联的事务。调用DdeEnableCallback会导致DDEML重新发送导致应用程序暂停会话的事务。因此,应用程序应该以这样的方式存储事务的结果,即可以在不重新处理事务的情况下获取和返回结果。

通过在DdeEnableCallback的调用中指定句柄和EC_DISABLE标志,应用程序可以暂停与特定对话句柄相关联的所有事务。通过指定NULL句柄,应用程序可以挂起所有会话的所有事务。

当对话已被暂停时,DDEML将会话中的事务保存在事务队列中。当应用程序重新启用会话时,DDEML将从队列中删除保存的事务,并将每个事务传递给相应的回调函数。事务队列的容量很大,但应用程序应尽快重新启用挂起的会话,以避免丢失事务。

应用程序可以通过在DdeEnableCallback中指定EC_ENABLEALL标志来恢复通常的事务处理。为了更加受控地恢复事务处理,应用程序可以指定EC_ENABLEONE标志。该标志从事务队列中移除一个事务,并将其传递给相应的回调函数;在处理该事务之后,任何会话再次被禁用。

如果在DdeEnableCallback的调用中指定了EC_ENABLEONE标志和会话句柄,则只有该对话在处理事务后才被阻止。如果指定了一个NULL会话句柄,则在任何会话中处理了一个事务后,所有对话都被阻止。