Просмотр полной версии : Обращение к выходам скрипта внутри статической функции
Есть ли возможность внутри статической функции в C# скрипте обратиться к выходам скрипта?
Есть необходимость в функции таймера public static void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e) (system.timers) обратиться к выходам. Стандартные фб для работы со временем не подходят по функционалу.
SCADAMaster
05.03.2018, 11:24
В статическом нельзя.
А что вы собрались с таймерами внутри цикла делать?
Предполагаю по нажатии кнопки запускать этот скрипт, чтобы выполнял функцию для работы с переменными через заданное время, после нажатия.
[FBRetain]
public partial class ФБ : ScriptBase
{
private static Timer aTimer;
public override void Start()
{
aTimer = new System.Timers.Timer();
aTimer.Interval = 3000;
aTimer.Elapsed += OnTimedEvent;
aTimer.AutoReset = true;
aTimer.Enabled = true;
aTimer.Start();
}
public override void Execute()
{
}
public static void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
{
}
}
SCADAMaster
05.03.2018, 14:31
Нельзя работать с таймерами в цикле - вы повесите поток.
Просто считайте такты опроса, или сохраняйте прошлое время время в скрипте, и сравнивайте с новым.
start() выполняется один раз при запуске, в нем запускается таймер, в execute() проверяется переменная, которая задается в таймере. Даже в этом случае вешается поток?
[FBRetain]
public partial class ФБ : ScriptBase
{
private static Timer aTimer;
private static bool flag=false;
public override void Start()
{
aTimer = new System.Timers.Timer();
aTimer.Interval = 3000;
aTimer.Elapsed += OnTimedEvent;
aTimer.AutoReset = true;
aTimer.Enabled = true;
aTimer.Start();
}
public override void Execute()
{
if(flag){
Параметр1=1;
flag=false;
}
}
public static void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
{
flag=true;
}
}
SCADAMaster
05.03.2018, 15:28
Поведение трудно предсказуемо.
И зачем статический метод?
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot