LogRecordSequence.BeginWriteRestartArea 方法

定義

開始執行非同步的重新啟動區域寫入作業。

多載

BeginWriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber, ReservationCollection, AsyncCallback, Object)

使用先前保留在順序中的空間,開始執行非同步的重新啟用區域寫入作業。 這個方法無法被繼承。

BeginWriteRestartArea(ArraySegment<Byte>, SequenceNumber, ReservationCollection, AsyncCallback, Object)

使用先前保留在順序中的空間,開始執行非同步的重新啟用區域寫入作業。 這個方法無法被繼承。

BeginWriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber, ReservationCollection, AsyncCallback, Object)

使用先前保留在順序中的空間,開始執行非同步的重新啟用區域寫入作業。 這個方法無法被繼承。

public:
 virtual IAsyncResult ^ BeginWriteRestartArea(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ data, System::IO::Log::SequenceNumber newBaseSeqNum, System::IO::Log::ReservationCollection ^ reservationCollection, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginWriteRestartArea (System.Collections.Generic.IList<ArraySegment<byte>> data, System.IO.Log.SequenceNumber newBaseSeqNum, System.IO.Log.ReservationCollection reservationCollection, AsyncCallback callback, object state);
abstract member BeginWriteRestartArea : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.ReservationCollection * AsyncCallback * obj -> IAsyncResult
override this.BeginWriteRestartArea : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.ReservationCollection * AsyncCallback * obj -> IAsyncResult
Public Function BeginWriteRestartArea (data As IList(Of ArraySegment(Of Byte)), newBaseSeqNum As SequenceNumber, reservationCollection As ReservationCollection, callback As AsyncCallback, state As Object) As IAsyncResult

參數

data
IList<ArraySegment<Byte>>

即將串連並附加成記錄之位元組陣列區段的清單。

newBaseSeqNum
SequenceNumber

新的基底序號。 指定的序號必須大於或等於目前基底序號。

reservationCollection
ReservationCollection

ReservationCollection,其中包含此重新啟動區域所應使用的保留區。

callback
AsyncCallback

選擇性的非同步回呼 (Callback),在重新啟動區域寫入完成時呼叫。

state
Object

使用者所提供的物件,可區別此特定非同步重新啟動區域寫入要求與其他要求。

傳回

IAsyncResult,表示可能還在暫止中的非同步重新啟動區域寫入作業。

實作

例外狀況

newBaseSeqNum 對此順序無效。

-或-

指定的記錄列舉起始序號無效。

-或-

無法附加 data,因為它已超過記錄大小上限。

-或-

reservationCollection 不是由此記錄順序所建立。

一或多個參數為 null

新的或現有封存結尾或作用中記錄的基底無效。

-或-

newBaseSeqNum 不是介於這個順序的基底序號和最後一個序號之間。

由於意外的 I/O 例外狀況,所以無法執行要求。

-或-

因為 I/O 裝置錯誤,所以無法執行要求。

已在處置序列之後呼叫此方法。

沒有足夠的記憶體可以繼續執行程式。

存取指定的記錄順序遭作業系統拒絕。

記錄順序已滿。

備註

您應該將這個方法所傳回的 IAsyncResult 傳遞給 EndWriteRestartArea 方法,以確定重新啟動區域寫入作業已完成,而且可以適當地釋放資源。 如果在非同步重新啟動區域寫入作業期間發生錯誤,就要等到系統以這個方法傳回的 EndWriteRestartArea 呼叫 IAsyncResult 方法時,才會擲回例外狀況。

包含在 data 參數中的資料將串連至單一位元組陣列中,以便附加成記錄。 不過,在讀取記錄時,並不會將資料分割回陣列區段。

當這個作業成功完成時,基底序號已經更新。 只要是序號小於新基底序號的所有記錄都無法存取。

如果已指定 ReservationCollection,寫入的重新啟動區域將會使用包含在集合中的保留區,以取用先前所保留的空間。 如果此方法成功,便會取用可以保存資料的最小保留區,而且該保留區將會從集合移除。

如果處置了記錄順序,或是您傳遞了無效的引數,就會立即在此作業中擲回例外狀況。 在非同步附加要求期間發生的錯誤 (例如,在 I/O 要求期間發生的磁碟錯誤) 會導致在呼叫 EndWriteRestartArea 方法時擲回例外狀況。

適用於

BeginWriteRestartArea(ArraySegment<Byte>, SequenceNumber, ReservationCollection, AsyncCallback, Object)

使用先前保留在順序中的空間,開始執行非同步的重新啟用區域寫入作業。 這個方法無法被繼承。

public:
 virtual IAsyncResult ^ BeginWriteRestartArea(ArraySegment<System::Byte> data, System::IO::Log::SequenceNumber newBaseSeqNum, System::IO::Log::ReservationCollection ^ reservation, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginWriteRestartArea (ArraySegment<byte> data, System.IO.Log.SequenceNumber newBaseSeqNum, System.IO.Log.ReservationCollection reservation, AsyncCallback callback, object state);
abstract member BeginWriteRestartArea : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.ReservationCollection * AsyncCallback * obj -> IAsyncResult
override this.BeginWriteRestartArea : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.ReservationCollection * AsyncCallback * obj -> IAsyncResult
Public Function BeginWriteRestartArea (data As ArraySegment(Of Byte), newBaseSeqNum As SequenceNumber, reservation As ReservationCollection, callback As AsyncCallback, state As Object) As IAsyncResult

參數

data
ArraySegment<Byte>

即將串連並附加成記錄的位元組陣列區段。

newBaseSeqNum
SequenceNumber

新的基底序號。 指定的序號必須大於或等於目前基底序號。

reservation
ReservationCollection

ReservationCollection,其中包含此重新啟動區域所應使用的保留區。

callback
AsyncCallback

選擇性的非同步回呼 (Callback),在重新啟動區域寫入完成時呼叫。

state
Object

使用者所提供的物件,可區別此特定非同步重新啟動區域寫入要求與其他要求。

傳回

IAsyncResult,表示可能還在暫止中的非同步重新啟動區域寫入作業。

實作

例外狀況

newBaseSeqNum 對此順序無效。

-或-

指定的記錄列舉起始序號無效。

-或-

無法附加 data,因為它已超過記錄大小上限。

-或-

reservation 不是由此記錄順序所建立。

一或多個參數為 null

新的或現有封存結尾或作用中記錄的基底無效。

-或-

newBaseSeqNum 不是介於這個順序的基底序號和最後一個序號之間。

由於意外的 I/O 例外狀況,所以無法執行要求。

-或-

因為 I/O 裝置錯誤,所以無法執行要求。

已在處置序列之後呼叫此方法。

沒有足夠的記憶體可以繼續執行程式。

存取指定的記錄順序遭作業系統拒絕。

記錄順序已滿。

備註

您應該將這個方法所傳回的 IAsyncResult 傳遞給 EndWriteRestartArea 方法,以確定重新啟動區域寫入作業已完成,而且可以適當地釋放資源。 如果在非同步重新啟動區域寫入作業期間發生錯誤,就要等到系統以這個方法傳回的 EndWriteRestartArea 呼叫 IAsyncResult 方法時,才會擲回例外狀況。

包含在 data 參數中的資料將串連至單一位元組陣列中,以便附加成記錄。 不過,在讀取記錄時,並不會將資料分割回陣列區段。

當這個作業成功完成時,基底序號已經更新。 只要是序號小於新基底序號的所有記錄都無法存取。

如果已指定 ReservationCollection,寫入的重新啟動區域將會使用包含在集合中的保留區,以取用先前所保留的空間。 如果此方法成功,便會取用可以保存資料的最小保留區,而且該保留區將會從集合移除。

如果處置了記錄順序,或是您傳遞了無效的引數,就會立即在此作業中擲回例外狀況。 在非同步附加要求期間發生的錯誤 (例如,在 I/O 要求期間發生的磁碟錯誤) 會導致在呼叫 EndWriteRestartArea 方法時擲回例外狀況。

適用於