C# 如何在C中使用定时器?
我希望我的函数每2秒执行一次,以检查是否有任何新用户,以便我可以为他们创建新日志。这是在控制台应用程序中,所以我使用了线程。但是我的控制台在运行一次该功能后关闭了。我希望只要我运行控制台,计时器就会运行,我的createLog函数将每2秒执行一次。我对C语言比较陌生,所以我对计时器的概念可能是完全错误的。请帮忙C# 如何在C中使用定时器?,c#,C#,我希望我的函数每2秒执行一次,以检查是否有任何新用户,以便我可以为他们创建新日志。这是在控制台应用程序中,所以我使用了线程。但是我的控制台在运行一次该功能后关闭了。我希望只要我运行控制台,计时器就会运行,我的createLog函数将每2秒执行一次。我对C语言比较陌生,所以我对计时器的概念可能是完全错误的。请帮忙 namespace ConsoleApplication1 { class Program { public static Hashtable clien
namespace ConsoleApplication1
{
class Program
{
public static Hashtable clientsList = new Hashtable();
static void Main(string[] args)
{
Timer t = new Timer(createLog, null, 0, 2000);
IPAddress ip = IPAddress.Parse("127.0.0.1");
TcpListener serverSocket = new TcpListener(ip, 9888);
TcpClient clientSocket = default(TcpClient);
int counter = 0;
serverSocket.Start();
.... //this main is monitoring the network....
console.read();
}
private static void createLog(object state)
{
//this function checks the database and if there is new user it will create a new text file for he/she.
}
}
由于这是一个控制台应用程序,您需要添加类似console.ReadLine的内容,以保持应用程序的活动状态,直到用户想要关闭它。可能会有所帮助
using FluentScheduler;
public class MyRegistry : Registry
{
public MyRegistry()
{
// Schedule an ITask to run at an interval
Schedule<MyTask>().ToRunNow().AndEvery(2).Seconds();
// Schedule a simple task to run at a specific time
Schedule(() => Console.WriteLine("Timed Task - Will run every day at 9:15pm: " + DateTime.Now)).ToRunEvery(1).Days().At(21, 15);
// Schedule a more complex action to run immediately and on an monthly interval
Schedule(() =>
{
Console.WriteLine("Complex Action Task Starts: " + DateTime.Now);
Thread.Sleep(1000);
Console.WriteLine("Complex Action Task Ends: " + DateTime.Now);
}).ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0);
}
}
Winforms/控制台应用程序->
WPF->在调用Start之后,需要一个像Console.ReadLine这样的阻塞调用来保持前台线程的运行。此外,您的计时器有资格进行垃圾收集,因为它在创建后不会再次被引用。在Main方法的末尾使用GC.KeepAlive来防止计时器被GC调用。我认为这不是问题所在。我删除了Timer对象,我的控制台工作正常,它确实需要我想要的,但是一旦我添加了Timer对象,控制台就会关闭down@qwrqwrcreateLog方法中是否存在异常?如果只调用createLog方法而不使用计时器,会发生什么?您向我们展示的代码在我的机器上每两秒钟执行一次,直到我按下enter键才停止。谢谢您的时间,但我想坚持使用timerOP详细的控制台应用程序First link比较了3个计时器,所有这些计时器都可以在控制台/Winform应用程序中使用。您使用的计时器类是什么?您的意思是