gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:48:36 29 4
gpt4 key购买 nike

我正在制作一个控制台应用程序,它必须按时间间隔调用特定方法。

我已经搜索过了,发现 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");
}
}
}

但我在 Timer x = new Timer(test, null, 0, 1000); 行中收到错误消息:

The best overloaded method match for System.Threading.Timer.Timer(System.Threading.TimerCallback, object, int, int)' has some invalid arguments

我真的不知道如何让它正常工作,但如果有人有链接或可以为初学者解释计时器的东西,我将不胜感激。

最佳答案

问题是您的test() 方法的签名:

public static void test()

TimerCallback 所需的签名不匹配:

public delegate void TimerCallback(
Object state
)

这意味着您不能直接从 test 方法创建 TimerCallback。最简单的做法是更改 test 方法的签名:

public static void test(Object state)

或者您可以在构造函数调用中使用 lambda 表达式:

Timer x = new Timer(state => test(), null, 0, 1000);

请注意,为了遵循 .NET 命名约定,您的方法名称应以大写字母开头,例如Test 而不是 test

关于c# - System.Threading.Timer.Timer() 的最佳重载方法匹配有一些无效参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14011868/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com