Получение и отправка данных в C#

            *:noh* *:nohlsearch*
:noh[lsearch]       Stop the highlighting for the 'hlsearch' option.  It
            is automatically turned back on when using a search
            command, or setting the 'hlsearch' option.
            This command doesn't work in an autocommand, because
            the highlighting state is saved and restored when
            executing autocommands |autocmd-searchpat|.
            Same thing for when invoking a user function.

я нашел его только под :help #, который я продолжаю поражать все время, и который выделяет все слова на текущей странице как текущая.

6
задан Cœur 6 August 2018 в 12:40
поделиться

2 ответа

Здесь несколько проблем:

  1. StreamReader имеет буфер 4 КБ и будет пытаться читать как как можно больше при первом вызове ReadLine () . В результате у вас могут быть данные в StreamReader, и вы можете перейти в Poll (), когда данных больше нет, потому что они уже были прочитаны.
  2. Poll () занимает микросекунды. Ожидание 0,02 мс входящих данных, скорее всего, вернет false, если данные не были там до вызова Poll () .
  3. Вы создаете новый StreamReader на каждой итерации, который может отбрасывать данные, уже прочитанные в предыдущей.

Если вы просто собираетесь читать строки и хотите тайм-аут и StreamReader , я сделал бы что-то вроде:

delegate string ReadLineDelegate ();
...
using (NetworkStream networkStream = tcpClient.GetStream()) {
    StreamReader reader = new StreamReader(networkStream);
    ReadLineDelegate rl = new ReadLineDelegate (reader.ReadLine);
    while (true) {
        IAsyncResult ares = rl.BeginInvoke (null, null);
        if (ares.AsyncWaitHandle.WaitOne (100) == false)
            break; // stop after waiting 100ms
        string str = rl.EndInvoke (ares);
        if (str != null) {
            Console.WriteLine ("Received: {0}", str);
            send (str);
        } 
    }
}
6
ответ дан 17 December 2019 в 00:10
поделиться

Прежде чем преследовать призраков, убедитесь, что данные действительно существуют в потоке. Если ВСЕГДА есть данные, мы можем подойти к проблеме, однако, глядя на это логически, кажется, что поток либо обнуляется, либо в нем просто нет данных.

1
ответ дан 17 December 2019 в 00:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: