IAsynchronousChannel Interface

Definição

Um canal que dá suporte a operações de E/S assíncronas.

[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
Derivado
Atributos
Implementações

Comentários

Um canal que dá suporte a operações de E/S assíncronas. As operações de E/S assíncrona geralmente tomarão uma das duas formas:

<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>

em que a operação é o nome da operação de E/S (leitura ou gravação, por exemplo), V é o tipo de resultado da operação de E/S e A é o tipo de um objeto anexado à operação de E/S para fornecer contexto ao consumir o resultado. O anexo é importante para casos em que um <em>state-less</em>CompletionHandler é usado para consumir o resultado de muitas operações de E/S.

No primeiro formulário, os métodos definidos pela Future Future interface podem ser usados para verificar se a operação foi concluída, aguardar sua conclusão e recuperar o resultado. No segundo formulário, um CompletionHandler é invocado para consumir o resultado da operação de E/S quando ela é concluída ou falha.

Um canal que implementa essa interface é <em>assíncronamente próximo</em>: se uma operação de E/S estiver pendente no canal e o método do #close close canal for invocado, a operação de E/S falhará com a exceção AsynchronousCloseException.

Canais assíncronos são seguros para uso por vários threads simultâneos. Algumas implementações de canal podem dar suporte à leitura e à gravação simultâneas, mas podem não permitir que mais de uma operação de leitura e uma gravação sejam pendentes em um determinado momento.

<h2>Cancelamento</h2>

A Future interface define o Future#cancel cancel método para cancelar a execução. Isso faz com que todos os threads que aguardam o resultado da operação de E/S lancem java.util.concurrent.CancellationException. Se a operação de E/S subjacente pode ser cancelada é altamente específica de implementação e, portanto, não especificada. Quando o cancelamento sai do canal ou da entidade à qual ele está conectado, em um estado inconsistente, o canal é colocado em um estado< de erro específico> de implementação <>que impede novas tentativas de iniciar operações de E/S semelhantes à operação que foi cancelada. Por exemplo, se uma operação de leitura for cancelada, mas a implementação não puder garantir que os bytes não tenham sido lidos do canal, ele colocará o canal em um estado de erro; novas tentativas de iniciar uma read operação fazem com que uma exceção de runtime não especificada seja gerada. Da mesma forma, se uma operação de gravação for cancelada, mas a implementação não puder garantir que os bytes não tenham sido gravados no canal, as tentativas subsequentes de iniciar uma write falha com uma exceção de runtime não especificada.

Onde o Future#cancel cancel método é invocado com o mayInterruptIfRunning parâmetro definido para true , em seguida, a operação de E/S pode ser interrompida fechando o canal. Nesse caso, todos os threads aguardando o resultado do lançamento CancellationException da operação de E/S e quaisquer outras operações de E/S pendentes no canal são concluídos com a exceção AsynchronousCloseException.

Quando o cancel método é invocado para cancelar operações de leitura ou gravação, é recomendável que todos os buffers usados nas operações de E/S sejam descartados ou cuidado para garantir que os buffers não sejam acessados enquanto o canal permanecer aberto.

Adicionado em 1.7.

Java documentação para java.nio.channels.AsynchronousChannel.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Propriedades

Nome Description
Handle

Obtém o valor JNI do objeto Android subjacente.

(Herdado de IJavaObject)
IsOpen

Retornará true se este canal estiver aberto.

(Herdado de IChannel)
JniIdentityHashCode

Retorna o valor da java.lang.System.identityHashCode() instância encapsulada.

(Herdado de IJavaPeerable)
JniManagedPeerState

Estado do par gerenciado.

(Herdado de IJavaPeerable)
JniPeerMembers

Acesso ao membro e suporte à invocação.

(Herdado de IJavaPeerable)
PeerReference

Retorna uma JniObjectReference das instâncias de objeto Java encapsuladas.

(Herdado de IJavaPeerable)

Métodos

Nome Description
Close()

Fecha este canal.

Disposed()

Chamado quando a instância foi descartada.

(Herdado de IJavaPeerable)
DisposeUnlessReferenced()

Se não houver referências pendentes a essa instância, então chamará Dispose(); caso contrário, não fará nada.

(Herdado de IJavaPeerable)
Finalized()

Chamado quando a instância foi finalizada.

(Herdado de IJavaPeerable)
SetJniIdentityHashCode(Int32)

Defina o valor retornado por JniIdentityHashCode.

(Herdado de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Um canal que dá suporte a operações de E/S assíncronas.

(Herdado de IJavaPeerable)
SetPeerReference(JniObjectReference)

Defina o valor retornado por PeerReference.

(Herdado de IJavaPeerable)
UnregisterFromRuntime()

Cancele o registro dessa instância para que o runtime não a retorne de invocações futuras Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Herdado de IJavaPeerable)

Métodos de Extensão

Nome Description
GetJniTypeName(IJavaPeerable)

Obtém o nome JNI do tipo da instância self.

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo marcada por runtime do Android.

JavaCast<TResult>(IJavaObject)

Um canal que dá suporte a operações de E/S assíncronas.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a