.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];
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д