Raf*_*del 6 .net c# multithreading timer
我正在制作一个控制台应用程序,必须在定时间隔内调用某个方法.
我已经搜索过了,发现System.Threading.Timer该类可以实现这样的功能,但我并没有完全遵循如何实现它.
我试过这个:
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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我Timer x = new Timer(test, null, 0, 1000);在行上写了一个错误:
对于System.Threading.Timer.Timer(System.Threading.TimerCallback,对象,INT,INT)"最好重载的方法匹配具有一些无效参数
我真的不知道如何使这项工作正常,但如果有人有链接或某些东西可以解释初学者的计时器,我将不胜感激.
Jon*_*eet 16
问题是你的test()方法的签名:
public static void test()
Run Code Online (Sandbox Code Playgroud)
与以下所需的签名不符TimerCallback:
public delegate void TimerCallback(
Object state
)
Run Code Online (Sandbox Code Playgroud)
这意味着您无法TimerCallback直接从该test方法创建.最简单的方法是更改test方法的签名:
public static void test(Object state)
Run Code Online (Sandbox Code Playgroud)
或者你可以在构造函数调用中使用lambda表达式:
Timer x = new Timer(state => test(), null, 0, 1000);
Run Code Online (Sandbox Code Playgroud)
请注意,要遵循.NET命名约定,您的方法名称应以大写字母开头,例如,Test而不是test.