Member 13462842 Ответов: 0

Как получить переменную в функции обратного вызова out


извините за название вопроса.
у меня есть проблема при использовании OPC API.

этот API объявляет делегат ReadCompleteEventHandler внутренне,
как-то по подписке.Read(), он передает ItemValueResult[] в Mydelegate.

ItemValueResult [] - это то, что мне нужно. Я могу использовать его внутри ReadCompleteCallback.
однако я превращаю его в форму окна, в другой класс, и тогда приходит беда.


class tester
    {
        public  void Work()
        {
            ReadCompleteEventHandler Mydelegate = new ReadCompleteEventHandler(ReadCompleteCallback);

            subscription.Read(subscription.Items, 123, Mydelegate, out req);
           
        }

static  void ReadCompleteCallback(object nn,ItemValueResult[] mm)
        {
            MessageBox.Show(mm); //mm can only use in my Tester Class
        
        }
    }


Что я уже пробовал:

в классе тестировщиков:
public  ItemValueResult[] resultinTesterClass;
       static  void ReadCompleteCallback(object nn,ItemValueResult[]mm)
       {
           MessageBox.Show(mm);
         resultinTesterClass = mm;

       }


где в форме 1:

public ItemValueResult[] resultinFormClass
        private void ButtonRead_Click(object sender, EventArgs e)
        {
            obj.Work();
            resultinFormClass=obj.resultinTesterClass;
        }


Я думаю, что это слишком косвенные и somethime resultinFormClass возвращать null.
Любой общепринятый способ решения.
Спасибо!

0 Ответов