Зависает форма c# при чтении com порта

360
30 октября 2017, 20:47

Здравствуйте. Я здесь новенький, поэтому сразу простите, если что-то оформлю не так. Проблема следующая: Устройство пишет множество строк (по объёму около 600мб) в порт. Скорость 1000000. Программа должна писать все строки в файл txt. Проблема в том, что через 10-15 секунд работы программа начинает зависать. Если я даю команду на закрытие порта, то но этой команде всё и зависает окончательно. В отладчике видно, что myport.Close() так и не выполняется до конца (ждал несколько минут).

private async void button3_Click(object sender, EventArgs e)
    {
        myport = new SerialPort();
        myport.BaudRate = 1000000;
        myport.PortName = comboBox1.SelectedItem.ToString();
        myport.Parity = Parity.None;
        myport.DataBits = 8;
        myport.StopBits = StopBits.One;
        myport.DataReceived += myport_DataReceived;
        try
        {
            if (myport.IsOpen)
            {
                myport.Close();
                myport.Open();
            }
            else
            {
                myport.Open();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error");
        }
        if (myport.IsOpen)
        {
       }
    }

public async void myport_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        in_data = myport.ReadLine();
        if (in_data != null)
        {
           byte[] b = ASCIIEncoding.ASCII.GetBytes(in_data);
           string myFilePath = @"C:\Users\Sergej\OneDrive\testc#\test.txt";
           File.AppendAllText(myFilePath, (b[0] - 14).ToString() + (b[1] - 14).ToString() + (b[2] - 14).ToString() + (b[3] - 14).ToString() + (b[4] - 14).ToString() + (b[5] - 14).ToString() + Environment.NewLine);}}
READ ALSO
Определение Panel в виде отдельного класса

Определение Panel в виде отдельного класса

Создал Panel с кучей элементов, но нужна мне эта панель, для того что бы множить и отображать по необходимости в FlowLayoutPanelВот как сделать эту панель...

271
C# - Зацикливание выполнения части кода

C# - Зацикливание выполнения части кода

Как зациклить выполнение данного кода C#?

366
C# Копирование массива

C# Копирование массива

Добрый деньОсваиваю язык C#

353
Получить данные от окна

Получить данные от окна

Возникла необходимость создавать окно для ввода названия файла который позже будет созданСоздать окно несложно, но как от этого окна вернуть...

248