SelectableChannel 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
可以透過 進行多工處理的 Selector
通道。
[Android.Runtime.Register("java/nio/channels/SelectableChannel", DoNotGenerateAcw=true)]
public abstract class SelectableChannel : Java.Nio.Channels.Spi.AbstractInterruptibleChannel, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/nio/channels/SelectableChannel", DoNotGenerateAcw=true)>]
type SelectableChannel = class
inherit AbstractInterruptibleChannel
interface IChannel
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 繼承
- 衍生
- 屬性
- 實作
備註
可以透過 進行多工處理的 Selector
通道。
若要搭配選取器使用,必須先透過 方法 註冊 這個類別的 #register(Selector,int,Object) register
實例。 這個方法會傳回新的 SelectionKey
物件,代表通道向選取器註冊。
向選取器註冊之後,通道會維持註冊狀態,直到 取消註冊為止。 這牽涉到取消配置選取器配置給通道的任何資源。
通道無法直接取消註冊;相反地,必須 取消代表其註冊的金鑰。 取消金鑰要求通道在選取器的下一個選取作業期間取消註冊。 叫用其 SelectionKey#cancel() cancel
方法,即可明確地取消金鑰。 當通道關閉時,所有通道的索引鍵都會隱含地取消,無論是叫用其 Channel#close close
方法,還是藉由在通道上中斷 I/O 作業中封鎖的執行緒。
如果選取器本身已關閉,通道將會取消註冊,而且代表其註冊的金鑰將會失效,而不會進一步延遲。
通道最多隻能向任何特定選取器註冊一次。
是否向一或多個選取器註冊通道,可能是藉由叫用 #isRegistered isRegistered
方法來決定。
可選取的通道可供多個平行線程使用。
「bm」 >< h2 > 封鎖模式 < /h2>
可選取的通道處於 封鎖 模式或 非封鎖 模式。 在封鎖模式中,通道上叫用的每個 I/O 作業都會封鎖,直到完成為止。 在非封鎖模式中,I/O 作業永遠不會封鎖,而且可能會傳輸比要求少的位元組或完全沒有位元組。 可選取通道的封鎖模式可以藉由叫用其 #isBlocking isBlocking
方法來決定。
新建立的可選取通道一律處於封鎖模式。 非封鎖模式最適合與選取器型多工處理搭配使用。 通道必須先進入非封鎖模式,再向選取器註冊,而且在取消註冊之前可能無法返回封鎖模式。
已在 1.4 中新增。
的 java.nio.channels.SelectableChannel
JAVA 檔。
此頁面的部分是根據所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。
建構函式
SelectableChannel() |
初始化這個類別的新執行個體。 |
SelectableChannel(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 標記法時使用的建構函式;由執行時間呼叫。 |
屬性
Class |
傳回這個 |
Handle |
基礎 Android 實例的控制碼。 (繼承來源 Object) |
IsBlocking |
指出此通道是否處於封鎖模式。 |
IsOpen |
如果這個通道已開啟,則會傳回 true。 (繼承來源 AbstractInterruptibleChannel) |
IsRegistered |
指出這個通道是否已向至少一個選取器註冊。 |
JniIdentityHashCode |
可以透過 進行多工處理的 |
JniPeerMembers |
可以透過 進行多工處理的 |
PeerReference |
可以透過 進行多工處理的 |
ThresholdClass |
此 API 支援適用于 Android 的 Mono 基礎結構,並不適合直接從您的程式碼使用。 |
ThresholdType |
此 API 支援適用于 Android 的 Mono 基礎結構,並不適合直接從您的程式碼使用。 |
方法
Begin() |
標示可能會無限期封鎖的 I/O 作業開頭。 (繼承來源 AbstractInterruptibleChannel) |
BlockingLock() |
擷取 |
Clone() |
建立並傳回這個 物件的複本。 (繼承來源 Object) |
Close() |
關閉此通道。 (繼承來源 AbstractInterruptibleChannel) |
ConfigureBlocking(Boolean) |
調整此通道的封鎖模式。 |
Dispose() |
可以透過 進行多工處理的 |
Dispose(Boolean) |
可以透過 進行多工處理的 |
End(Boolean) |
標示可能會無限期封鎖的 I/O 作業結尾。 (繼承來源 AbstractInterruptibleChannel) |
Equals(Object) |
指出其他物件是否「等於」這個物件。 (繼承來源 Object) |
GetHashCode() |
傳回此物件的雜湊碼值。 (繼承來源 Object) |
ImplCloseChannel() |
關閉此通道。 (繼承來源 AbstractInterruptibleChannel) |
JavaFinalize() |
當垃圾收集判斷物件不再參考物件時,垃圾收集行程會在物件上呼叫。 (繼承來源 Object) |
KeyFor(Selector) |
擷取索引鍵,表示通道向指定的選取器註冊。 |
Notify() |
喚醒正在等候此物件監視器的單一線程。 (繼承來源 Object) |
NotifyAll() |
喚醒正在等候此物件監視器的所有線程。 (繼承來源 Object) |
Provider() |
傳回建立此通道的提供者。 |
Register(Selector, Operations) |
向指定的選取器註冊此通道,並傳回選取索引鍵。 |
Register(Selector, Operations, Object) |
向指定的選取器註冊此通道,並傳回選取索引鍵。 |
SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
ToArray<T>() |
可以透過 進行多工處理的 |
ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
UnregisterFromRuntime() |
可以透過 進行多工處理的 |
ValidOps() |
傳回作業集,識別此通道支援的作業。 |
Wait() |
讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > 。 >< (繼承來源 Object) |
Wait(Int64) |
讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > ,或直到經過一定數量的即時為止。 <> (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > ,或直到經過一定數量的即時為止。 <> (繼承來源 Object) |
明確介面實作
IJavaPeerable.Disposed() |
可以透過 進行多工處理的 |
IJavaPeerable.DisposeUnlessReferenced() |
可以透過 進行多工處理的 |
IJavaPeerable.Finalized() |
可以透過 進行多工處理的 |
IJavaPeerable.JniManagedPeerState |
可以透過 進行多工處理的 |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
可以透過 進行多工處理的 |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
可以透過 進行多工處理的 |
IJavaPeerable.SetPeerReference(JniObjectReference) |
可以透過 進行多工處理的 |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
可以透過 進行多工處理的 |
GetJniTypeName(IJavaPeerable) |
可以透過 進行多工處理的 |