How to change value over time with a better way

so i made a async method in order to add a number and minus it after a period of time, but i dont wanna write this method again if there are another variable i have to use, so is there any better approach?

 async void addAndminus(int addnum, int time)
    {
        i += addnum;
        await Task.Delay(time * 1000);
        i -= addnum;
    }

and i slightly modify it to become like this

 async void addAndminus(int addnum, int time, bool foo)
    {
        if (foo)
        {
            i+= addnum;
            await Task.Delay(time * 1000);
            i-= addnum;
        }
        else
        {
            j+= addnum;
            await Task.Delay(time * 1000);
            j-= addnum;
        }
    }

Could this possibly help?

Yes, you can use the ref keyword, which can modify the original variable passed to the function. e.g:

async Task AddAndMinus(ref int num, int value, int time)
{
     num += value;
     await Task.Delay(time * 1000);
     num -= value;
}

And then you can use the function like:

if (foo)
{
     await AddAndMinus(ref i, addNum, time);
}
else
{
     await AddAndMinus(ref j, addNum, time);
}

@wai030