PDA

Просмотр полной версии : Вызов асинхронного метода в скрипте MasterSCADA



Toshix
29.06.2021, 19:12
Добрый день!

Народ, подскажите пожалуйста, в проекте MasterSCADA v3.8 имеется скрипт, в котором организован вызов асинхронного метода - данный скрипт успешно компилируется и вроде замечаний в его работе не выявлено. Есть необходимость перейти на версию MasterSCADA 3.12. Но вот беда, при переносе проекта, а именно вышеуказанного скрипта - при его компиляции SCADA выдает следующие ошибки:

Строка 0 - Работа со скриптом.Сбор сообщений : (CS0518) Заранее определяемый тип "System.Runtime.CompilerServices.IAsyncStateMachine" не определен или не импортирован
Строка 52 - Работа со скриптом.Сбор сообщений : (CS1993) Не удается найти все типы, требуемые модификатором "async". Возможно, указана неправильная версия .NET Framework или отсутствует ссылка на необходимую сборку.
Строка 50 - Работа со скриптом.Сбор сообщений : (CS1993) Не удается найти все типы, требуемые модификатором "async". Возможно, указана неправильная версия .NET Framework или отсутствует ссылка на необходимую сборку.

Соответственно скрипт не компилируется и проект не запускается корректно. Подскажите пожалуйста есть ли возможность устранить данную проблему. Исходный код скрипта во вложении.
P.S. Проект тестировался в среде MasterSCADA DEMO

SCADAMaster
29.06.2021, 21:15
Странно что у вас это работало.
У нас для совместимости используется старая версия .NetFramework где еще нет Async и Await.
Вы можете делать так:
Task.Factory.StartNew(() => SendSMS(_mMs)).Wait();
https://docs.microsoft.com/ru-ru/dotnet/api/system.threading.tasks.task.wait?view=netcore-3.1

Toshix
29.06.2021, 22:01
Добрый вечер! Спасибо! Внес изменения, скрипт скомпилировался без ошибок, на тестовом проекте все работает!