IAsynchronousChannel 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
支援非同步 I/O 作業的通道。
[Android.Runtime.Register("java/nio/channels/AsynchronousChannel", "", "Java.Nio.Channels.IAsynchronousChannelInvoker", ApiSince=26)]
public interface IAsynchronousChannel : IDisposable, Java.Interop.IJavaPeerable, Java.Nio.Channels.IChannel
[<Android.Runtime.Register("java/nio/channels/AsynchronousChannel", "", "Java.Nio.Channels.IAsynchronousChannelInvoker", ApiSince=26)>]
type IAsynchronousChannel = interface
interface IChannel
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 衍生
- 屬性
- 實作
備註
支援非同步 I/O 作業的通道。 非同步 I/O 作業通常會採用兩種形式之一:
<ol >< li>
{@link Future}<V> <em>operation</em>(<em>...</em>)
</li >< li>
void <em>operation</em>(<em>...</em> A attachment, {@link
CompletionHandler}<V,? super A> handler)
</li >< /ol>
其中 operation 是讀取或寫入 (I/O 作業的名稱,例如) 、 V 是 I/O 作業的結果類型, 而 A 是附加至 I/O 作業的物件類型,可在取用結果時提供內容。 附件對於使用無 em 狀態/em >CompletionHandler
來取用許多 I/O 作業結果的情況 < 而言很重要。 ><
在第一個表單中 Future Future
,介面所定義的方法可用來檢查作業是否已完成、等候完成,以及擷取結果。 第二種形式會叫用 , CompletionHandler
以在完成或失敗時取用 I/O 作業的結果。
實作此介面的通道是 < em > 非同步可關閉 < /em > :如果通道上的 I/O 作業未完成且叫用通道的 #close close
方法,則 I/O 作業會失敗,但例外狀況為 AsynchronousCloseException
。
非同步通道可供多個平行線程使用。 某些通道實作可能支援並行讀取和寫入,但可能不允許在任何指定時間執行多個讀取和一個寫入作業。
<h2 > 取消 < /h2>
介面 Future
會 Future#cancel cancel
定義取消執行的方法。 這會導致所有等候 I/O 作業結果的執行緒擲回 java.util.concurrent.CancellationException
。 是否可以取消基礎 I/O 作業是高度特定的實作,因此未指定。 當取消作業離開通道或其連接的實體處於不一致的狀態時,通道會進入實作特定的 < em > 錯誤狀態 < /em > ,以防止進一步嘗試起始與已取消之作業 類似的 I/O 作業。 例如,如果讀取作業已取消,但實作無法保證尚未從通道讀取位元組,則會讓通道進入錯誤狀態;進一 read
步嘗試起始作業會導致擲回未指定的執行時間例外狀況。 同樣地,如果取消寫入作業,但實作無法保證尚未寫入通道的位元組,後續嘗試起始 write
將會失敗,併發生未指定的執行時間例外狀況。
Future#cancel cancel
當 方法叫用時 mayInterruptIfRunning
,將 參數設定為 true
,則關閉通道可能會中斷 I/O 作業。 在此情況下,所有等候 I/O 作業結果的執行緒都會擲回 CancellationException
,以及通道上未完成的任何其他 I/O 作業,但例外狀況為 AsynchronousCloseException
。
cancel
叫用 方法以取消讀取或寫入作業,則建議捨棄 I/O 作業中使用的所有緩衝區,或小心確保通道保持開啟時不會存取緩衝區。
已在 1.7 中新增。
的 java.nio.channels.AsynchronousChannel
JAVA 檔。
此頁面的部分是根據所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。
屬性
Handle |
取得基礎 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
IsOpen |
如果這個通道已開啟,則會傳回 true。 (繼承來源 IChannel) |
JniIdentityHashCode |
傳回已包裝實例的 值 |
JniManagedPeerState |
Managed 對等的狀態。 (繼承來源 IJavaPeerable) |
JniPeerMembers |
成員存取和調用支援。 (繼承來源 IJavaPeerable) |
PeerReference |
傳 JniObjectReference 回已包裝 JAVA 物件實例的 。 (繼承來源 IJavaPeerable) |
方法
Close() |
關閉此通道。 |
Disposed() |
處置實例時呼叫。 (繼承來源 IJavaPeerable) |
DisposeUnlessReferenced() |
如果這個實例沒有未完成的參考,則呼叫 |
Finalized() |
實例完成時呼叫。 (繼承來源 IJavaPeerable) |
SetJniIdentityHashCode(Int32) |
設定 所 |
SetJniManagedPeerState(JniManagedPeerStates) |
支援非同步 I/O 作業的通道。 (繼承來源 IJavaPeerable) |
SetPeerReference(JniObjectReference) |
設定 所 |
UnregisterFromRuntime() |
取消註冊這個實例,讓執行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。 (繼承來源 IJavaPeerable) |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
支援非同步 I/O 作業的通道。 |
GetJniTypeName(IJavaPeerable) |
支援非同步 I/O 作業的通道。 |