Visual Studio C# delay function for if statment

I’m looking for a way to create a delay in my code without stopping the rest of the code in this time frame. It has to work as follows. If a condition is true for X amount of seconds, set the alarm bool High. The code below is a part of code where I set the alarms but there needs to be a delay.

I'm very new to C# so try to dumb it down a bit, maybe a small example or links.
I also check there but i cant understand some things: https://www.plcnext.help/te/Programming/Csharp/Csharp_in_PLCnext.htm[url="https://www.ourmarriagedate.com/"]mehndi[/url]

if (Valve.Parameter.NormallyOpen == false) 
{
    if (Valve.Status.Output == true & Valve.Status.Opened == false)
    {
        Valve.Alarm.NotOpened = true;
    }

    if (Valve.Status.Output == false & Valve.Status.Closed == false)
    {
        Valve.Alarm.NotClosed = true;
    }
} 
Some background info: this will be a valve control block in PLCNext written in C#. The control block should give a alarm if the valve is send open but does not give open feedback within X seconds (takes time to open).

 using System;
using System.Threading;
using System.Iec61131Lib;
using Iec61131.Engineering.Prototypes.Types;
using Iec61131.Engineering.Prototypes.Variables;
using Iec61131.Engineering.Prototypes.Methods;
using Iec61131.Engineering.Prototypes.Common;

namespace EclrFirmwareLibrary1
{
    [FunctionBlock]
    public class Valve_Test
    {
        [InOut]
        public Valve Valve;

        [Output]
        public bool Output;

        double seconds = 1.00; // 1 Second Interval
        

        [Initialization]
        public void __Init()
        {
            //
            // TODO: Initialize the variables of the function block here
            //
        }
        
        [Execution]
        public void __Process()
        {
            Valve.Status.Interlock = Valve.Control.Interlock;
            Valve.Status.Opened = Valve.Control.FB_Open;
            Valve.Status.Closed = Valve.Control.FB_Closed;
            
            if (Valve.Control.Manual_Mode == true){
                Valve.Status.Manual_Mode = true;
                Valve.Status.Auto_Mode = false;
            }
            if (Valve.Control.Auto_Mode == true & Valve.Control.Manual_Mode == false){
                Valve.Status.Manual_Mode = false;
                Valve.Status.Auto_Mode = true;
            }

            if(Valve.Status.Interlock == false & Valve.Alarm.General == false)
            {
                if (Valve.Status.Manual_Mode & Valve.Control.Manual_Control)
                {
                    Output = true;
                    Valve.Status.Output = true;
                }
                else if (Valve.Status.Auto_Mode & Valve.Control.Auto_Control)
                {
                    Output = true;
                    Valve.Status.Output = true;
                }
                else
                {
                    Output = false;
                    Valve.Status.Output = false;
                }
            }
            else
            {
                Output = false;
                Valve.Status.Output = false;
            }

            //Alarms---------------------------------------------------
            var startTimeSpan = TimeSpan.Zero;
            var periodTimeSpan = TimeSpan.FromSeconds(seconds);

            var timer = new System.Threading.Timer((e) =>
            {
                CheckValve();
            }, null, startTimeSpan, periodTimeSpan);

        }
         
        private void CheckValve()
        {
            if (Valve.Parameter.NormallyOpen == false)
            {
                if (Valve.Status.Output == true & Valve.Status.Opened == false)
                {
                    Valve.Alarm.NotOpened = true;
                }

                if (Valve.Status.Output == false & Valve.Status.Closed == false)
                {
                    Valve.Alarm.NotClosed = true;
                }
            }
            else
            {
                if (Valve.Status.Output == false & Valve.Status.Opened == false)
                {
                    Valve.Alarm.NotOpened = true;
                }
                if (Valve.Status.Output == true & Valve.Status.Closed == false)
                {
                    Valve.Alarm.NotClosed = true;
                }
            }
            
            if (Valve.Status.Opened == true & Valve.Status.Closed == true)
            {
                Valve.Alarm.OpenedAndClosed = true;
            }


            if (Valve.Alarm.NotClosed || Valve.Alarm.NotOpened || Valve.Alarm.OpenedAndClosed)
            {
                Valve.Alarm.General = true;
            }
        }

    }
}

This question looks remarkably similar to the one that was asked and answered in Stack Overflow a while back:

https://stackoverflow.com/questions/63736466/visual-studio-c-sharp-delay-function-for-if-statment

Please let us know what is unclear about the answer to that question.