Здравствуйте, подскажите, пожалуйста, в чем дело. Если считывать принятые пакеты функией ReadFile единоразово, то все работает нормально, но если ее зацыклить, то приложение подвисает. Вот код: Код (Text): static public int Recive(out byte[] outBuffer) { byte[] buffer = new byte[1512]; uint Recived = 0; unsafe { fixed (void* lpoutbuffer = buffer) { ReadFile(hDriver, lpoutbuffer, (uint)buffer.Length, &Recived, 0); } } outBuffer = buffer; return (int)Recived; } Помогите разобраться, спасибо.
Прошу прощения за не точную формулировку, не совсем подвисает. Вот: Код (Text): private void Button1_Click(object sender, RoutedEventArgs e) { byte[] BytesRecieved; int recived = 0, i=0; statusBar1.Items.Add(DriverControl.MessageTextBlock); DriverControl.OpenAdapter(AdaptInfo, SelectedIndex); do { DriverControl.Recive(out BytesRecieved); textBox1.Text = BitConverter.ToString(BytesRecieved); i++; } while (i==10); } Как видно из кода вывод в текстбокс должен происходить после каждого получения пакета, а он происходит только один, последний раз
Fantasista Случайно не поэтому: Код (Text): int recived = 0, i=0; do { DriverControl.Recive(out BytesRecieved); textBox1.Text = BitConverter.ToString(BytesRecieved); i++; } while (i==10);///!!!! Цикл осуществляется пока i равен 10. У вас с самого начала он равен 0.Вот поэтому всего один раз и крутиться. )))
Об этом что ли речь? Код (Text): do { result = ReadFile(hDevice, buffer, bufferSize, &bytesReturned, NULL); } while (result && bytesReturned);
Да, прошу прощения, не уследил )), но в таком Код (Text): do { DriverControl.Recive(out BytesRecieved); textBox1.Text = BitConverter.ToString(BytesRecieved); i++; } while (i<10); виде вывод тоже происходит 1 раз
В общем насколько я понял это C#? Тогда посмотрите что возвращает ReadFile. Да,кстати, какие данные вы принимаете? Код (Text): textBox1.Text = BitConverter.ToString(BytesRecieved) На сколько я понимаю это вывод содержимого буфера. Может просто все данные одинаковые и вы не видите разницы между выведенным содержимым?
принимаю я пакеты из сети, но дело в другом, если запустить отлакду и проследить ха значением свойства "Text", то оно меняеться, но в самом тектбоксе этого почему-то не видно, а вот если заменить строчку textBox1.Text = BitConverter.ToString(BytesRecieved); на вывод месседжбокса, то он выводиться 10 раз как положено, выходит дело не в ReadFile