Desidero una funzione di lettura non bloccante dalla console.Lettura non bloccante da I/O standard in C#
risposta
var buf=new byte[2048];
var inputStream=Console.OpenStandardInput(); //dispose me when you're done
inputStream.BeginRead(buf,0,buf.Length,ar=>{
int amtRead=inputStream.EndRead(ar);
//buf has what you need. You'll need to decode it though
},null);
Non hai dimenticato il parametro count? – CodesInChaos
... Sì. Grazie! – spender
Quando verrà attivato il tuo 'EndRead'? Penso solo se arrivi alla fine dello stream, o quando il buffer è pieno, e non se sono disponibili solo pochi caratteri di input. – CodesInChaos
Richard Dutton ha una soluzione sul his blog:
while (true)
{
if (Console.KeyAvailable)
{
ConsoleKeyInfo key = Console.ReadKey(true);
switch (key.Key)
{
case ConsoleKey.F1:
Console.WriteLine("You pressed F1!");
break;
default:
break;
}
}
// Do something more useful
}
il 'ConsoleKeyInfo' contiene il campo' KeyChar' che rappresenta la rappresentazione 'char', che potrebbe essere ciò che l'OP vuole. – CodesInChaos
Ouch. Veramente? Basta girare un loop il più velocemente possibile fino a quando un tasto è disponibile? Questo è stupido. – spender
@spender Ecco perché c'è il commento // Fai qualcosa di più utile lì dentro. – CodesInChaos
- 1. Script Bash con lettura non bloccante
- 2. Blocco IO rispetto a IO non bloccante; alla ricerca di buoni articoli
- 3. Accesso in esecuzione non bloccante?
- 4. Avvia il processo non bloccante da PowerShell
- 5. non bloccante getch()
- 6. Rimuovi caratteri da stringa in standard C
- 7. UI non standard in C#
- 8. programmazione del socket udp non bloccante in C: cosa ottengo?
- 9. C# socket non bloccante senza loop (vero)
- 10. Funzione di attesa non bloccante in Objective-C
- 11. Non bloccante sleep in C# 5.0 (come setTimeout in JavaScript)
- 12. Ricerca di esempio di programma non bloccante DTLS (C/C++)
- 13. wrapper C/C++ per Haskell IO monad
- 14. Cattura output standard da CreateProcessAsUser in C#
- 15. Kombu in modalità non bloccante
- 16. Risoluzione DNS non bloccante (asincrona) in Java
- 17. Scrapy: pausa non bloccante
- 18. Lettura da un enorme MemoryStream in C#
- 19. C# Lettura PCL da file
- 20. ruby linea non bloccante read
- 21. Registrazione remota non bloccante asincrona in Java?
- 22. Browser lettura HTML dall'input standard
- 23. utilizzando una connessione socket non bloccante in C
- 24. Sottoprocesso non bloccante
- 25. Raccolta simultanea non bloccante?
- 26. la lettura da stdin in C++
- 27. Lettura dei dati da DataGridView in C#
- 28. Ottimizza file C# IO
- 29. non bloccante di attesa in pitone
- 30. Stream C++ contro IO in stile C?
Perché questa non è una vera e propria domanda? Capirei di chiuderlo come duplicato, ma come "non una vera domanda" mi sembra strano. – CodesInChaos
@Mitch Wheat: il blocco di ReadKey non è corretto? – jgauffin
@Me è necessario combinare almeno 'KeyAvailable' e' ReadKey'. E non sono ancora sicuro se questa è la cosa giusta da fare e come interagisce con input reindirizzati o chiavi morte. Quindi non è certamente una domanda banale. – CodesInChaos