© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
C#C
C#•3y ago•
6 replies
entasy

❔ ✅ Help Passing Arguments to Action (Custom Wait Code)

Hi, I'm trying to code a custom wait code.
This code works, but I want to use methods with arguments.

What I want:
static void test(string text){
    Console.WriteLine(text);
}
wait(3, test("Hello World!"));
static void test(string text){
    Console.WriteLine(text);
}
wait(3, test("Hello World!"));

What I can do:
static void test(){
    Console.WriteLine("Hello World!");
}
wait(3, test); // It shows "Hello World!" message after 3 seconds.
static void test(){
    Console.WriteLine("Hello World!");
}
wait(3, test); // It shows "Hello World!" message after 3 seconds.

public static void Main(string[] args)
{
    wait_init();

    new Thread(
        () => { while (true) { wait_tick(); Thread.Sleep(100); } }
    ).Start();

    static void test()
    {
        Console.WriteLine("Hello World!");
    }
    wait(3, test);
}

public static WaitStruct[] Waits = new WaitStruct[100];

public struct WaitStruct
{
    public bool isInUse;
    public float waitTime;
    public Action waitFunc;
}

public static void wait_init()
{
    for (int i = 0; i < 100; i++)
    {
        Waits[i].isInUse = false;
        Waits[i].waitTime = 0;
    }
}

public static void wait_tick()
{
    for (int i = 0; i < 100; i++)
    {
        if (Waits[i].isInUse == true)
        {
            Waits[i].waitTime -= 0.1f;
            Console.WriteLine(Waits[i].waitTime);
            if (Waits[i].waitTime <= 0){
                Waits[i].isInUse = false;
                Waits[i].waitFunc();
            }
        }
    }
}

public static void wait(float duration, Action func)
{
    for (int i = 0; i < 100; i++)
    {
        if (Waits[i].isInUse == false)
        {
            Waits[i].isInUse = true;
            Waits[i].waitTime = duration;
            Waits[i].waitFunc = func;
            break;
        }
    }
}
public static void Main(string[] args)
{
    wait_init();

    new Thread(
        () => { while (true) { wait_tick(); Thread.Sleep(100); } }
    ).Start();

    static void test()
    {
        Console.WriteLine("Hello World!");
    }
    wait(3, test);
}

public static WaitStruct[] Waits = new WaitStruct[100];

public struct WaitStruct
{
    public bool isInUse;
    public float waitTime;
    public Action waitFunc;
}

public static void wait_init()
{
    for (int i = 0; i < 100; i++)
    {
        Waits[i].isInUse = false;
        Waits[i].waitTime = 0;
    }
}

public static void wait_tick()
{
    for (int i = 0; i < 100; i++)
    {
        if (Waits[i].isInUse == true)
        {
            Waits[i].waitTime -= 0.1f;
            Console.WriteLine(Waits[i].waitTime);
            if (Waits[i].waitTime <= 0){
                Waits[i].isInUse = false;
                Waits[i].waitFunc();
            }
        }
    }
}

public static void wait(float duration, Action func)
{
    for (int i = 0; i < 100; i++)
    {
        if (Waits[i].isInUse == false)
        {
            Waits[i].isInUse = true;
            Waits[i].waitTime = duration;
            Waits[i].waitFunc = func;
            break;
        }
    }
}
C# banner
C#Join
We are a programming server aimed at coders discussing everything related to C# (CSharp) and .NET.
61,871Members
Resources

Similar Threads

Was this page helpful?
Recent Announcements

Similar Threads

✅ Need Help Passing Code Off To Helper Function
C#CC# / help
3y ago
How to pass custom arguments to MAUI button click
C#CC# / help
4y ago
✅ How to resolve CS9017 when trying passing captured arguments by primary constructor to base class?
C#CC# / help
3y ago
code help
C#CC# / help
17mo ago