SelectionKey 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
一個代表 SelectableChannel 註冊的 標記,且 Selector為 。
[Android.Runtime.Register("java/nio/channels/SelectionKey", DoNotGenerateAcw=true)]
public abstract class SelectionKey : Java.Lang.Object
[<Android.Runtime.Register("java/nio/channels/SelectionKey", DoNotGenerateAcw=true)>]
type SelectionKey = class
inherit Object
- 繼承
- 衍生
- 屬性
備註
一個代表 SelectableChannel 註冊的 標記,且 Selector為 。
每當頻道被選擇器註冊時,都會產生一個選擇鍵。 一個金鑰在被 取消 前仍有效,直到透過呼叫其 #cancel cancel 方法、關閉通道或關閉選擇器來取消。 取消按鍵不會立即將其從選擇器中移除;它會被加入選擇器的 <I>cancelled-key set</i> ,以便在下一次選擇操作時移除。 可透過調用其 #isValid isValid 方法來測試金鑰的有效性。
「opsets」>
選擇鍵包含兩個以整數值表示的 運算集合 。 操作集的每個位元代表一類可選操作,這些操作由金鑰通道所支援。
<UL>
<李>
興趣集決定下一次使用選擇器選擇方法時,哪些操作類別將被測試是否準備好。 興趣集初始化時的值為建立鍵時的值;之後可能會透過該 #interestOps(int) 方法進行更改。
</李>
<李>
準備集用來識別該鍵的通道已被鍵選擇器偵測到已準備好的操作類別。 當金鑰建立時,準備集會初始化為零;選擇器可在選擇操作中更新,但無法直接更新。
</李>
</ul>
選擇鍵的準備集表示其通道已準備好執行某操作類別,這暗示(但不保證)執行緒可以執行該類別的操作而不會導致執行緒阻塞。 預備集最有可能在選擇操作完成後立即準確。 外部事件及對應通道所呼叫的輸入輸出操作,可能會使它變得不準確。
此類別定義了所有已知的操作集位元,但特定通道支援哪些位元取決於通道的類型。 每個 SelectableChannel 子類別定義一個 SelectableChannel#validOps() validOps() 方法,回傳一組,僅識別通道所支援的操作。 嘗試設定或測試一個未被金鑰通道支援的操作集位元,將導致適當的執行時例外。
通常需要將某些應用特定的資料與選擇鍵關聯,例如代表高階協定狀態並處理準備通知的物件,以實作該協定。 因此,選擇鍵支援將單一任意物件 附加 到鍵上。 物件可以透過此 #attach attach 方法附加,之後再透過該 #attachment() attachment 方法取得。
選擇鍵對多個並行執行緒是安全的。 選擇操作始終使用操作開始時目前的利息集合值。
在 1.4 版本加入。
Java 文件 java.nio.channels.SelectionKey。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| SelectionKey() |
構造此類別的實例。 |
| SelectionKey(IntPtr, JniHandleOwnership) |
用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。 |
欄位
| 名稱 | Description |
|---|---|
| OpAccept |
已淘汰.
用於套接(socket-accept)操作的操作集位元。 |
| OpConnect |
已淘汰.
用於插槽連接操作的操作集位元。 |
| OpRead |
已淘汰.
用於讀取操作的操作集位元。 |
| OpWrite |
已淘汰.
用於寫入操作的操作集位元。 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| IsAcceptable |
測試此金鑰的通道是否準備好接受新的套接字連接。 |
| IsConnectable |
測試此金鑰通道是否完成或未完成插槽連接操作。 |
| IsReadable |
測試此金鑰的通道是否準備好讀取。 |
| IsValid |
表示此金鑰是否有效。 |
| IsWritable |
測試該金鑰的通道是否準備好撰寫。 |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
一個代表 |
| JniPeerMembers |
一個代表 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
方法
| 名稱 | Description |
|---|---|
| Attach(Object) |
將指定物件附加到此鍵上。 |
| Attachment() |
取回目前的附件。 |
| Cancel() |
請求取消該金鑰通道與其選擇器的註冊。 |
| Channel() |
回傳建立此金鑰所用的通道。 |
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
一個代表 |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
一個代表 |
| Equals(Object) |
一個代表 |
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| InterestOps() |
取回這把鑰匙的利息組。 |
| InterestOps(Operations) |
取回這把鑰匙的利息組。 |
| InterestOpsAnd(Int32) |
原子式地將此鍵的興趣集合設定為現有興趣集合與給定值的位元交叉點(「and」)。 |
| InterestOpsOr(Int32) |
原子層次將此鍵的興趣集合設定為現有興趣集合與給定值的位元聯集(「或」)。 |
| JavaFinalize() |
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| ReadyOps() |
取出這把鑰匙的即裝操作組。 |
| Selector() |
回傳建立此鍵的選擇器。 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
一個代表 |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
一個代表 |
| IJavaPeerable.Finalized() |
一個代表 |
| IJavaPeerable.JniObjectReferenceControlBlock |
一個代表 |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
一個代表 |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
一個代表 |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
一個代表 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
一個代表 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |