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

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

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

Здравствуйте. Есть код, который сканирует данные с USB, и он работает (принимает байты с ардуино). Но, как известно, C# не позволяет двум разным потокам обмениваться данными, только через делегаты. А я хочу как раз, чтобы значение из Task-потока было вытащено и использовалось в программе как мне заблагоразумится! Может кто-то дать исправленный код? А то как только я влезаю в делегаты, то там их надо вызывать методом BeginInvoke(), а он находится в пространстве System.Windows.Forms, нужно создавать объект Form, инициализировать его, и в итоге безрезультатно провозиться два дня, обращаясь на форум... Пожалуйста, помогите.
Листинг программы
  1. class Program
  2. {
  3. //вот сюда мне надо поместить значение из потока
  4. byte[] buff = new byte[1];
  5. static void Main(string[] args)
  6. {
  7. Task task = new Task(ReadSerialData);
  8. task.Start();
  9. while(true)
  10. {
  11. if (Console.ReadLine().Equals("exit"))
  12. Environment.Exit(0);
  13. }
  14. }
  15. static void ReadSerialData()
  16. {
  17. SerialPort port = new SerialPort("COM14", 9600);
  18. port.Open();
  19. while (true)
  20. {
  21. byte[] buffer = new byte[1];
  22. try
  23. {
  24. port.Read(buffer, 0, 1);
  25. Console.WriteLine(buffer[0]);
  26. //тут я пытаюсь из потока изъять значение, но ошибка...
  27. buff[0] = buffer[0];
  28. }
  29. catch (Exception ex)
  30. {
  31. Console.WriteLine("Что-то пошло не так..." + ex.ToString());
  32. }
  33. }
  34. port.Close();
  35. }
  36. }

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

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

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


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

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

12   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы