I'm making a console application that must call a certain method in timed intervals.
I've searched for that and found that the System.Threading.Timer
class can achieve such a functionality, but I'm not quite following how to implement it.
I tried this:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Timer x = new Timer(test, null, 0, 1000);
Console.ReadLine();
}
public static void test()
{
Console.WriteLine("test");
}
}
}
But I get an error on the Timer x = new Timer(test, null, 0, 1000);
line that says:
The best overloaded method match for System.Threading.Timer.Timer(System.Threading.TimerCallback, object, int, int)' has some invalid arguments
I really don't know how to make this work properly, but if anyone has a link or something that can explain timers for a beginner, I'd be grateful.
The problem is that the signature of your test()
method:
public static void test()
doesn't match the required signature for TimerCallback
:
public delegate void TimerCallback(
Object state
)
That means you can't create a TimerCallback
directly from the test
method. The simplest thing to do is to change the signature of your test
method:
public static void test(Object state)
Or you could use a lambda expression in your constructor call:
Timer x = new Timer(state => test(), null, 0, 1000);
Note that to follow .NET naming conventions, your method name should start with a capital letter, e.g. Test
rather than test
.
TimerCallback
delegate (first argument of the Timer
constructor you use) takes one argument (state) of type object
.
All you have to do it to add parameter to the test
method
public static void test(object state)
{
Console.WriteLine("test");
}
And the issue will be resolved.
write the test method as follows to resolve the exception:
public static void test(object state)
{
Console.WriteLine("test");
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With