Share via


IAsynchronousChannel 介面

定義

支援非同步 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}&lt;V&gt; <em>operation</em>(<em>...</em>)

</li >< li>

void <em>operation</em>(<em>...</em> A attachment, {@link
              CompletionHandler}&lt;V,? super A&gt; 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>

介面 FutureFuture#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

傳回已包裝實例的 值 java.lang.System.identityHashCode()

(繼承來源 IJavaPeerable)
JniManagedPeerState

Managed 對等的狀態。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取和調用支援。

(繼承來源 IJavaPeerable)
PeerReference

JniObjectReference 回已包裝 JAVA 物件實例的 。

(繼承來源 IJavaPeerable)

方法

Close()

關閉此通道。

Disposed()

處置實例時呼叫。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果這個實例沒有未完成的參考,則呼叫 Dispose() ,否則不會執行任何動作。

(繼承來源 IJavaPeerable)
Finalized()

實例完成時呼叫。

(繼承來源 IJavaPeerable)
SetJniIdentityHashCode(Int32)

設定 所 JniIdentityHashCode 傳回的值。

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

支援非同步 I/O 作業的通道。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

設定 所 PeerReference 傳回的值。

(繼承來源 IJavaPeerable)
UnregisterFromRuntime()

取消註冊這個實例,讓執行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。

(繼承來源 IJavaPeerable)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

支援非同步 I/O 作業的通道。

GetJniTypeName(IJavaPeerable)

支援非同步 I/O 作業的通道。

適用於