Я устанавливаю две очереди: одну для хранения полученных 8-байтовых значений и одну для хранения 8-байтовых значений для отправки. Отправка и получение будут происходить в отдельном потоке (или двух), который запускается в файле App.xaml.cs созданного мною решения WPF. Я хочу, чтобы очередь содержала STRUCT, описывающую эти 8-байтовые значения.
Я действительно не думал, что эта вещь STRUCT будет иметь большое значение. Я всегда использовал STRUCT в C-коде. Но по какой-то причине определение STRUCT, кажется, работает (никаких жалоб от VS 17), и экземпляр STRUCT работает, но инициализация полей STRUCT не распознается. ???? см. пример кода ниже.
Я пробовал:
// define the structures
public struct ReceiveStruct {
byte[] deviceName;
byte functionCode;
byte MSBbyte;
byte LSBbyte;
}
public struct SendStruct {
byte[] deviceName;
byte functionCode;
byte MSBbyte;
byte LSBbyte;
}
// instantiate the two structures that I want
public ReceiveStruct receiveStruct;
public SendStruct sendStruct;
// initialize the structure fields
receiveStruct.deviceName = 'abcde'; // HERE IS WHERE THE PROBLEM LIES
// Intellisense does not recognize
// these fields??? It does not
// list "deviceName" for example
// after
// the "dot" after
// "receiveStruct".
// receiveStruct.functionCode = 3;
.
.
.
// instantiate the queues
Queue receiveQueue = new Queue();
queue sendQueue = new Queue();
// populate the queues
receiveQueue.Enqueue(receiveStruct);
sendQueue.Enqueue(sendStruct);
.
.
.
Я подумал, что впервые инициализирую поля структуры, чтобы не нарушать правила "по значению" для структур, а затем с радостью изменю эти поля по мере выполнения моего кода и загрузлю очереди, чтобы их можно было обрабатывать в другом месте как FIFO, на самом деле подпитывающий другой СПИСОК, чтобы затем действовать и регистрироваться. Ничего страшного.
Но я не могу пройти сквозь тупую инициализацию структуры !!!!