Compartilhar via


IAsynchronousChannel Interface

Definição

Um canal que oferece 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 oferece suporte a operações de E/S assíncronas. As operações de E/S assíncronas geralmente assumem 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>

onde 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 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, a CompletionHandler é chamado 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 closeable</em>: Se uma operação de E/S estiver pendente no canal e o método do canal for chamado, a operação de E/S #close close falhará com a exceção AsynchronousCloseException.

Os canais assíncronos são seguros para uso por vários threads simultâneos. Algumas implementações de canal podem oferecer suporte a 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 método para cancelar a Future#cancel cancel execução. Isso faz com que todos os threads aguardando 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ífico da implementação e, portanto, não especificado. Quando o cancelamento deixa o canal, ou a entidade à qual ele está conectado, em um estado inconsistente, o canal é colocado em um estado< de erro específico da>implementação</em> 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 foram lidos do canal, ela colocará o canal em um estado de erro; Outras tentativas de iniciar uma read operação fazem com que uma exceção de tempo de execução não especificada seja lançada. 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 um write falharão com uma exceção de tempo de execução não especificada.

Quando o Future#cancel cancel método é chamado 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 da operação de E/S lançam CancellationException e quaisquer outras operações de E/S pendentes no canal são concluídas, com exceção AsynchronousCloseExceptionde .

Quando o cancel método é chamado 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 que sejam tomados cuidados para garantir que os buffers não sejam acessados enquanto o canal permanece aberto.

Adicionado em 1.7.

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

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

Propriedades

Handle

Obtém o valor JNI do objeto Android subjacente.

(Herdado de IJavaObject)
IsOpen

Retorna true se esse canal estiver aberto.

(Herdado de IChannel)
JniIdentityHashCode

Retorna o valor de java.lang.System.identityHashCode() para a instância encapsulada.

(Herdado de IJavaPeerable)
JniManagedPeerState

Estado do par gerenciado.

(Herdado de IJavaPeerable)
JniPeerMembers

Acesso de membros e suporte à invocação.

(Herdado de IJavaPeerable)
PeerReference

Retorna uma JniObjectReference das instâncias do objeto Java encapsulado.

(Herdado de IJavaPeerable)

Métodos

Close()

Fecha este canal.

Disposed()

Chamado quando a instância tiver sido descartada.

(Herdado de IJavaPeerable)
DisposeUnlessReferenced()

Se não houver referências pendentes a este caso, então chame Dispose(), caso contrário, não faz nada.

(Herdado de IJavaPeerable)
Finalized()

Chamado quando a instância tiver sido finalizada.

(Herdado de IJavaPeerable)
SetJniIdentityHashCode(Int32)

Defina o valor retornado por JniIdentityHashCode.

(Herdado de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Um canal que oferece 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 tempo de execução não a retorne de chamadas futuras Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Herdado de IJavaPeerable)

Métodos de Extensão

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo verificada em tempo de execução do Android.

JavaCast<TResult>(IJavaObject)

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

GetJniTypeName(IJavaPeerable)

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

Aplica-se a