System.Threading.Timer.Timer()的最佳重载方法匹配具有一些无效参数

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.