.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];