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