.NET 4.x Возврат значения из Task - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Есть код, который сканирует данные с USB, и он работает (принимает байты с ардуино). Но, как известно, C# не позволяет двум разным потокам обмениваться данными, только через делегаты. А я хочу как раз, чтобы значение из Task-потока было вытащено и использовалось в программе как мне заблагоразумится! Может кто-то дать исправленный код? А то как только я влезаю в делегаты, то там их надо вызывать методом BeginInvoke(), а он находится в пространстве System.Windows.Forms, нужно создавать объект Form, инициализировать его, и в итоге безрезультатно провозиться два дня, обращаясь на форум... Пожалуйста, помогите.
class Program
    {
        //вот сюда мне надо поместить значение из потока
        byte[] buff = new byte[1];
 
        static void Main(string[] args)
        {
            Task task = new Task(ReadSerialData);
            task.Start();
 
            while(true)
            {
                if (Console.ReadLine().Equals("exit"))
                Environment.Exit(0);
            }
        }
 
        static void ReadSerialData()
        {
            SerialPort port = new SerialPort("COM14", 9600);
            port.Open();
            while (true)
            {
                byte[] buffer = new byte[1];
                try
                {
                    port.Read(buffer, 0, 1);
                    Console.WriteLine(buffer[0]);
                    //тут я пытаюсь из потока изъять значение, но ошибка...
                    buff[0] = buffer[0];
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Что-то пошло не так..." + ex.ToString());
                }
            }
            port.Close();
        }
    }

Решение задачи: «.NET 4.x Возврат значения из Task»

textual
Листинг программы
//вот сюда мне надо поместить значение из потока
static byte[] buff = new byte[1];

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5
Похожие ответы