LogRecordSequence.BeginFlush(SequenceNumber, AsyncCallback, Object) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
使用序列中先前保留的空间开始异步刷新操作。 无法继承此方法。
public:
virtual IAsyncResult ^ BeginFlush(System::IO::Log::SequenceNumber sequenceNumber, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginFlush (System.IO.Log.SequenceNumber sequenceNumber, AsyncCallback callback, object state);
abstract member BeginFlush : System.IO.Log.SequenceNumber * AsyncCallback * obj -> IAsyncResult
override this.BeginFlush : System.IO.Log.SequenceNumber * AsyncCallback * obj -> IAsyncResult
Public Function BeginFlush (sequenceNumber As SequenceNumber, callback As AsyncCallback, state As Object) As IAsyncResult
参数
- sequenceNumber
- SequenceNumber
必须写入的最新记录的序列号。 如果此 SequenceNumber 无效,则必须写入所有记录。
- callback
- AsyncCallback
可选的异步回调,在刷新完成时调用。
- state
- Object
用户提供的对象,用于将此特定异步刷新请求与其他请求区别开来。
返回
一个 IAsyncResult,表示可能仍处于挂起状态的异步刷新操作。
实现
例外
sequenceNumber
对此序列无效。
sequenceNumber
不在此序列的基序列号和最后一个序列号之间。
由于出现意外的 I/O 异常,因此无法执行该请求。
指定的日志没有任何范围。 必须创建一个或多个范围,然后才能使用记录序列。
由于记录序列是通过只读访问权限打开的,因此无法执行该操作。
该方法是在序列已释放之后调用的。
没有足够的内存来继续执行该程序。
记录序列已满。
操作系统拒绝了对指定的日志序列的访问。
注解
应将当前方法返回的 IAsyncResult 传递给 EndFlush 方法,以确保刷新完成并适当释放资源。 如果在异步刷新过程中发生错误,则在使用此方法返回的 EndFlush 调用 IAsyncResult 方法之前,不会引发异常。
调用此方法可以确保已追加到 LogRecordSequence 的所有记录都是持久写入的。
如果记录序列已经释放,或者如果传递了无效自变量,此操作内将立即引发异常。 异步刷新请求过程中发生的错误(例如,I/O 请求过程中的磁盘故障)将导致在调用 EndFlush 方法时引发异常。