Показано с 1 по 6 из 6

Тема: Обращение к выходам скрипта внутри статической функции

  1. #1

    По умолчанию Обращение к выходам скрипта внутри статической функции

    Есть ли возможность внутри статической функции в C# скрипте обратиться к выходам скрипта?

    Есть необходимость в функции таймера public static void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e) (system.timers) обратиться к выходам. Стандартные фб для работы со временем не подходят по функционалу.

  2. #2

    По умолчанию

    В статическом нельзя.
    А что вы собрались с таймерами внутри цикла делать?
    Спасибо.

  3. #3

    По умолчанию

    Предполагаю по нажатии кнопки запускать этот скрипт, чтобы выполнял функцию для работы с переменными через заданное время, после нажатия.
    [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)
    {

    }
    }

  4. #4

    По умолчанию

    Нельзя работать с таймерами в цикле - вы повесите поток.
    Просто считайте такты опроса, или сохраняйте прошлое время время в скрипте, и сравнивайте с новым.
    Спасибо.

  5. #5

    По умолчанию

    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;
    }
    }

  6. #6

    По умолчанию

    Поведение трудно предсказуемо.
    И зачем статический метод?
    Спасибо.

Похожие темы

  1. Ответов: 18
    Последнее сообщение: 08.10.2021, 22:54
  2. Обращение к базе данных из скрипта C#
    от Vinsen в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 23.01.2019, 13:02
  3. Ответов: 3
    Последнее сообщение: 04.05.2017, 08:52
  4. Ответов: 10
    Последнее сообщение: 22.03.2017, 08:57
  5. обращение к журналу из скрипта
    от Михаил Ч. в разделе Master SCADA 3
    Ответов: 5
    Последнее сообщение: 12.07.2010, 15:22

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •